我试图遍历几个UIViewControllers:第一个(开始)视图是一个菜单,最后一个视图作为结果页面循环回到起始视图,点击我的栏按钮后#34 ;完成&#34 ;.
使用故事板进行测试,我当然使用push segue来浏览视图,但是然后使用模式segue和"完成"按钮,让我回到起始视图控制器,它具有嵌入式导航控制器。这可以防止我使用后退按钮跳过起始视图并撤消过去的循环。这是一件好事(花了我一段时间才弄明白),因为我不想再循环回到一个循环的起始视图。
我的设计问题是我的内存使用量不断增长,而且我不知道如何从之前的循环中释放/释放视图。我计划在这个应用程序中使用数组,图像,tableViews,所以我真的需要一些关于如何在"完成"之后释放大量内存的指导。按下按钮,应用程序将转到开始菜单视图。
我正在使用Xcode版本5.1.1。模拟iPhone 3.5英寸。
谢谢
答案 0 :(得分:0)
你说:
...但是然后使用带有“完成”按钮的模态segue
您不希望使用完成按钮进行模态segue(因为这会将所有旧视图控制器保留在内存中并实例化第一个场景的新副本)。如果你不解雇所有这些旧视图控制器,你最终会“放弃”与这些场景相关的内存。
相反,您想要使用展开segue。这将返回到特定的视图控制器,解除任何介入场景(如果有),并释放与它们及其视图控制器关联的内存。
在第一个视图控制器中,创建一个展开操作:
- (IBAction)unwindToFirstScene:(UIStoryboardSegue *)segue {
// this is intentionally blank
}
在第一个视图控制器(“完成”按钮的目标)中创建了它,在最后一个视图控制器中的“完成”按钮和出口之间创建一个segue:
当您这样做时,系统会提示您进行展开操作。