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出来 |