对IOS控制器有一般性问题:
在启动ios创建默认UI视图控制器然后我可以调用presentViewController或使用Segue打开其他人
问题是以前的控制器是否仍在内存中?
例如,这里是链:A-> B-> C-> D-> B-> C ......等等,过渡B-> C-> D-> ; B处于循环中。
它会创建每个控制器的新实例并保留每个副本吗?会重复使用吗?
感谢
答案 0 :(得分:6)
是的,如果你正在进行模态segues和presentViewController调用,ViewControllers仍然存在。您应该调用[self dismissViewControllerAnimated:YES completion:nil];
并关闭堆栈以返回到您已经创建的viewController,而不是转向已经创建的这些viewControllers的新实例。
您可以使用presentingViewController
属性,如:
[[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:YES completion:nil]...etc
或
[self.navigationController popToRootViewControllerAnimated:YES];
(如果您使用的是导航VC)
为了快速解散几个viewControllers。
不会再次调用viewDidLoad
,但您可以在viewWillAppear
和viewDidAppear
内刷新viewController。