2012-07-27 139 views
0

当应用程序启动时,我已经在验证字段后将视图控制器(登录)重定向到标签栏控制器。问题是我必须放置注销按钮,当单击注销按钮时,它应该转到根视图控制器(登录页面)。我试图从标签栏控制器推送到根视图控制器,它被推动,但仍然面临少数标签栏问题,同时继续进行。我如何从标签栏项目弹出/推送到根视图控制器?从标签栏控制器注销到根视图控制器

+0

检查此[链接](http://stackoverflow.com/questions/2716755/showing-login-view-controller-before-主标签栏控制器?rq = 1) 并添加didLogoutFinished:方法 – 2012-07-27 14:41:08

+0

您是否找到答案 – 2015-05-12 18:12:20

回答

2

我想你的AppDelegate.m中,你已经创建了一个导航控制器的LoginUIViewController作为RootViewController。

你可以解决这样的问题:

例如,你有一个FirstTabUIViewControllerTabBarController,你想要去从FirstTabUIViewController回你LoginUIViewController(你RootViewController的)。

  1. 创建于FirstTabUIViewController.h您TabBarController参考,.M

    @property(强,非原子)IBOutlet中的UITabBarController * tabBarController;

    @synthesize tabBarController = _tabBarController;在.M

  2. 创建方法处理 “注销” 按钮点击

    - (IBAction为)logoutBtnTapped:(的UIBarButtonItem *)发件人{

    [self.tabBarController.navigationController popToRootViewControllerAnimated:YES];

    }

那是!希望有所帮助:)

0

当您单击注销按钮时,您只需要将登录屏幕再次放置在appdelegate窗口中。

LoginViewController *loginVC = [[LoginViewController alloc]init]; 
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
[appDelegate.window setRootViewController:loginVC];// This will initiate the login screen again 
0

这工作正常,我在同样的情况下,

ChooseStateViewController *loginVC = [[ChooseStateViewController alloc]initWithNibName:@"ChooseStateViewController" bundle:nil]; 

UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:loginVC]; 
[nc.navigationBar setTintColor:[UIColor blackColor]]; 
AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate; 
[appDelegate.window setRootViewController:nc]; 
相关问题