从第三层导航控制器返回原始Root View Controller

时间:2016-01-12 10:26:44

标签: ios xcode uinavigationcontroller uistoryboard rootviewcontroller

我有一些故事板设置如下:

故事板A

- >根导航控制器 - >容器视图控制器 - >视图控制器 - >家庭视图控制器 - >故事板B参考

故事板B

- >容器视图控制器 - >导航控制器 - >视图控制器 - >故事板C参考

故事板C

- >导航控制器 - >查看控制器

它的要点是,我加载了应用程序并设置了rootViewController。然后我浏览应用程序,最后进入Storyboard B,其中包含一个按钮,可以转到Storyboard C。在View Controller Storyboard C中有一个按钮,我想带我回到应用的开头。

如何,View Controller中的Storyboard C,我可以回到Home View Controller中的Storyboard A吗?

我尝试过的事情:

[self.navigationController.navigationController popViewControllerAnimated:animated];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[self presentViewController:viewController animated:animated completion:nil];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[UIApplication sharedApplication].keyWindow.rootViewController = viewController;

以上3个都回到了正确的位置,但随后应用程序崩溃了EXC_I386_GPFLT

我还尝试了一些其他不起作用的事情。我知道这可能是非常简单的事情,我只是度过了糟糕的一天。任何建议现在都非常感谢。

1 个答案:

答案 0 :(得分:1)

我似乎已经通过在主线程上执行popViewControllerAnimated:方法解决了它:

[self.navigationController.navigationController performSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:nil waitUntilDone:nil];