如何展示视图控制器并closures所有其他视图?

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

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

所有以前的视图控制器都不会被卸载。 没有调用一个viewDidUnload方法。 如何才能做到这一点?

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

幸运的是,从iOS 6开始,通过展开 ,有很多改进的方法可以做到这一点。 这可以让您在故事板中“回溯”回到起点,这听起来就像您想要的一样。 WWDCvideo有一些例子和步骤,你也可能想看看这个现有的SO问题:

什么是放松的过程,你如何使用它们?

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