NavController Pop在Root VC之前查看控制器

时间:2014-07-02 22:36:32

标签: ios xcode uinavigationcontroller storyboard segue

Storyboard

在我正在构建的应用程序中,我希望能够从最后一个"查看控制器启动时使用的视图控制器。做这个的最好方式是什么?我非常喜欢以下功能:

[self.navigationController popToViewController:originalVC animated:YES];

然而,在这种情况下似乎不起作用,因为原始VC未包含在导航控制器中。当我使用时:

[self presentViewController:launchVC animated:YES completion:nil];
该应用程序只显示黑屏死机。

感谢。

2 个答案:

答案 0 :(得分:1)

NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *originalViewController = viewControllers[0];
[self.navigationController setViewControllers:@[originalViewController] animated:YES];

<强>更新

抱歉,我误解了你的问题。正确答案是:

UIViewController *originalViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"originalViewControllerStoryboardId"];
UIWindow *window = [UIApplication sharedApplication].keyWindow;
window.rootViewController = originalViewController;

答案 1 :(得分:1)

你可以通过展开segue来做到这一点。只需在初始控制器中创建一个方法,该方法是一个带有UIStoryboardSegue参数的IBAction,然后将最后一个控制器(或按钮或单元格之类的UI元素)连接到退出图标,然后选择您在初始控制器。这会将您带回到您开始使用的初始控制器的同一个实例,并且中间的所有控制器都将被释放(如果您在初始控制器中没有任何强指针)。