如何处理在iOS中跳回到以前的屏幕

时间:2012-12-21 19:38:42

标签: ios memory-management memory-leaks uiviewcontroller

我只是想在这里寻找理智。

我有一个用户在进入主应用程序的过程中经过的屏幕。该屏幕可以从系统中的几乎任何位置导航回来。

目前我只是在不使用NavController管理它们的情况下呈现ViewControllers(它似乎不适用于我的大多数应用程序,因为屏幕不一定是顺序的或彼此相关的。)

我的问题是,如果我提交了VC1,然后导航到其他屏幕,最后想再次展示VC1,我正在做类似的事情:

[self presentViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"VC1"] animated:YES completion:nil];

这是不好的形式?我是通过创建一堆VC1实例来泄漏内存还是有一些魔法使用之前创建的实例?

如果形式不好,我该如何回到原来的VC1重复使用?

感谢您的任何意见。

1 个答案:

答案 0 :(得分:2)

我认为你固定它:在内存中同时拥有同一个视图控制器的多个实例并不是一个好主意。每次实例化一个新的视图控制器并以模态方式呈现它时,你将消耗更多的内存。

最优雅的解决方案是iOS 6 unwind segue。但是我们大多数人都不愿意放弃iOS 5的支持。

如果您需要支持iOS 5,您可以考虑使用导航控制器,但如果您不喜欢在用户界面中隐藏导航栏,则会隐藏导航栏。然后用push segues替换模态segues,现在只要你想返回主视图控制器就可以popToRootViewController