Jos*_*iah 3 oop cocoa-touch objective-c multiple-instances instance
对于我的应用程序,我想要有一些相同视图控制器的不同实例.现在,我只是创建一个这样的新实例:
iSafeViewController *tab = [[iSafeViewController alloc] init];
[tab setModalPresentationStyle:UIModalPresentationFullScreen];
[tab setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:tab animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
大.既然这是在iSafeViewController类中完成的,我还有另一个按钮,它当前只是关闭堆栈中的最新控制器.
- (IBAction)closeTab:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
但是,我真的希望能够回到这些实例.所以,我有两个问题.
并dismissViewControllerAnimated从内存中删除该控制器的实例.如果没有,有没有办法可以重新呈现它.
那么可能有更好的方法来浏览viewController实例presentViewControllerAnimated.至少,是否有更好的方法来创建一个viewController的新实例,并能够导航到每个实例,希望不在堆栈中.换句话说,如果有三个viewController实例,有没有办法可以从第三个实例转到主实例?
任何想法,将不胜感激.谢谢.
" dismissViewControllerAnimated从内存中删除该控制器的实例吗?如果没有,有没有办法可以重新呈现它."
调用dismissViewControllerAnimated没有从内存中显式删除视图控制器,但如果代码的其他部分没有存储对视图控制器的强引用,则一旦呈现视图控制器关闭VC,它可能会按照正常的内存管理系统解除分配.
因此,如果您确保代码中的某些内容具有对视图控制器的引用(除了以模态方式呈现它的VC),它将在被解除后不会消失,是的,这意味着您可以重新使用它.
对于查看控制器的"随机访问":您可以使用UINavigationController和使用类似的方法popToViewController:animated:和多次调用pushViewController:animated:(没有动画!)来创建前往任意视图控制器的效果.这感觉有点像黑客.
或者,最好,您可以编写自己的自定义容器视图控制器.这是一个处理呈现其他视图控制器的视图控制器.请参阅Apple文档.
这是关于这个主题的一个很好的WWDC视频:实现UIViewController遏制
进一步阅读:
| 归档时间: |
|
| 查看次数: |
2884 次 |
| 最近记录: |