我有大约20个视图控制器,与Modal和Push segue链接在一起。现在,在最后一个View Controller中,我想再次切换回第一个View Controller,就像用户重新启动了应用程序一样。不幸的是,当我这样做时
[UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InitViewController"]];
[self presentViewController:viewController animated:YES completion:nil];
未卸载所有以前的视图控制器。没有调用单个viewDidUnload方法。怎么办呢?
答案 0 :(得分:1)
instantiateViewController
方法会创建视图控制器的 new 副本。您的现有视图控制器未被卸载,因为iOS不知道您想要“返回”,可以这么说。它无法卸载任何现有的视图控制器,因为它们仍在导航层次结构中。你真正想做的是以某种方式“回放”你的故事板。
幸运的是,从iOS 6开始,通过展开,有一种改进的方法。这使您可以在故事板中“回溯”回到开头,这听起来像是您想要做的。 WWDC视频有一些示例和演练,您可能还想看看现有的SO问题:
答案 1 :(得分:0)
我发现可以通过在层次结构中的第一个视图控制器上调用dismissViewControllerAnimated:completion:来轻松完成。幸运的是,只需要完成我想要的东西: - )