0

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

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

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

4

2 回答 2

1

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

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

Unwind segues 有什么用,你如何使用它们?

于 2013-01-29T12:05:05.240 回答
0

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

于 2013-05-29T10:57:47.070 回答