您没有正确使用模态转换。您实现的方式是,在进行segue时创建了每个视图控制器的新实例,而不是返回到之前的实例。这就是为什么您的内存使用量一直在增加。
在iOS 6之前,处理此问题的正确方法是:
1)在视图控制器1中定义一个名为`viewController2Done`的方法
2)在视图控制器2中,创建一个名为`delegate`的类型为`id`的属性。
3)在视图控制器1的`prepareToSegue`中,将视图控制器2中的`delegate`设置为`self`
4)在视图控制器2中,当需要返回到视图控制器1时,调用`[delegate viewController2Done]`
5)在`viewController2Done`中,调用`[self dismissModalViewControllerAnimated:YES]`
这种方法在iOS 6中仍然有效,但也可以使用新的“退回segue”。要使用它,您需要在您的视图控制器1中定义一个方法,例如:
- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
NSLog(@"and we are back");
}
Swift:
@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
print("and we are back")
}
那么您需要从视图控制器 2 中的按钮向故事板中位于视图控制器上方的橙色退出图标进行拖放控制。在弹出窗口中,选择 unwindFromViewController2
,完成。
![enter image description here](https://istack.dev59.com/60LN6.webp)