我有两个这样的UINavigationControl:
LoginNavigationController -> LoginView
HomeNavigationController -> HomeView -> ...
从LoginView我导航到HomeView,如下所示:
[self presentViewController:HomeNavigationController animated:YES completion:nil];
现在,当应用程序转到后台时,我需要转到LoginView。这样做的正确方法是什么?使用presentViewController重定向会导致任何内存问题吗?
答案 0 :(得分:0)
假设您的LoginViewController
是层次结构中的根视图控制器,也许您可以在应用代理中的popToRootViewController
上调用rootViewController
(在applicationWillEnterForeground
或其他内容中)< / p>
答案 1 :(得分:0)
您可以使用视图控制器popToRootViewController
。首先,你需要找到你想要去的前一个控制器,
在HomeNavigationController上,
for (UIViewController *controller in self.navigationController.viewControllers) {
if([controller isKindOfClass:[LoginNavigationController class]]){
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
当应用程序转到后台然后转到前台时,执行此代码。
答案 2 :(得分:0)
呈现可能不是你想要的,因为它呈现的是另一个视图控制器而不是已经加载的视图控制器。我会选择弹出到根视图控制器。
[self.navigationController popToRootViewControllerAnimated:YES];
答案 3 :(得分:0)
在您AppDelegate
的{{1}}方法中,更改窗口的根视图控制器。
applicationDidEnterBackground
答案 4 :(得分:0)
请在LoginView中使用以下代码 -
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodEnterBGMode) name:UIApplicationDidEnterBackgroundNotification object:nil];
}
- (void)methodEnterBGMode
{
[self dismissViewControllerAnimated:NO completion:nil];
}
希望这会对你有所帮助。