如何呈现视图控制器并关闭所有其他视图控制器?

时间:2013-01-29 11:11:07

标签: ios memory-management uiviewcontroller storyboard segue

我有大约20个视图控制器,与Modal和Push segue链接在一起。现在,在最后一个View Controller中,我想再次切换回第一个View Controller,就像用户重新启动了应用程序一样。不幸的是,当我这样做时

[UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InitViewController"]];
[self presentViewController:viewController animated:YES completion:nil];

未卸载所有以前的视图控制器。没有调用单个viewDidUnload方法。怎么办呢?

2 个答案:

答案 0 :(得分:1)

instantiateViewController方法会创建视图控制器的 new 副本。您的现有视图控制器未被卸载,因为iOS不知道您想要“返回”,可以这么说。它无法卸载任何现有的视图控制器,因为它们仍在导航层次结构中。你真正想做的是以某种方式“回放”你的故事板。

幸运的是,从iOS 6开始,通过展开,有一种改进的方法。这使您可以在故事板中“回溯”回到开头,这听起来像是您想要做的。 WWDC视频有一些示例和演练,您可能还想看看现有的SO问题:

What are Unwind segues for and how do you use them?

答案 1 :(得分:0)

我发现可以通过在层次结构中的第一个视图控制器上调用dismissViewControllerAnimated:completion:来轻松完成。幸运的是,只需要完成我想要的东西: - )