if( [self goToMainView] )
{
MainViewController * vc = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
_navController = [[UINavigationController alloc]initWithRootViewController:vc];
}
else
{
LoginViewController * vc = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
_navController = [[UINavigationController alloc]initWithRootViewController:vc];
}
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = _navController;
[self.window makeKeyAndVisible];
//
上面的代码是我判断直接进入Main界面,还是先通过Logoin界面,然后再进入Main界面的情况(在Login界面里面如果正常的话会push到Main界面)。
现在的问题是,如果我直接进入了Main界面,在Main界面里面有一个 Logout按钮,登出之后,怎么样才能进入Login界面呢?
|
|
![]() 20分 |
要我的话,我不会像你这样处理。
我会把MainViewController 作为根控制器,而登录LoginViewController 我更倾向于使用present的方式来弹出。 这样在Main中点logout时只需要再弹出loginViewController即可 MainViewController * vc = [[MainViewController alloc]initWithNibName:@"MainViewController" bundle:nil];
UINavigationController *_navController = [[UINavigationController alloc]initWithRootViewController:vc];
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = _navController;
if (![self goToMainView]) {
[self showLoginView];
}
[self.window makeKeyAndVisible];
///////show login
-(void)showLoginView {
UIViewController *rootController= self.window. rootViewController;
LoginViewController * vc = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
UINavigationController *_navLogin = [[UINavigationController alloc]initWithRootViewController:vc];
[rootController presentViewController:_navLogin animated:YES completion:nil];
}
|
![]() 20分 |
用模态窗口可解决。
如果你不想改变现在Login界面push到Main界面的结构,就不要在Login界面里调用push方法,而是setViewControllers方法,同样可以进入到Main界面,还会把Login界面释放掉。 Main界面登出后再把Login界面present出来 |
