假设我有两个页面,其中包含两个 UIViewControllers
、UIViewController1
和 UIViewController2
.
如果我想在 UIViewController1
上显示 UIViewController2
我有三个选项:
UINavigationController
pushViewController
.presentViewController
。addSubView
: UIViewController1.view.addSubView(UIViewController2.view)
如果我需要在我的 View 之间进行转换,我更喜欢第三个选项,因为它让我可以更好地控制 View 。
这三个选项在性能方面有什么区别吗?
在 iOS 6 之前,您不应该执行选项 3。 View Controller 旨在控制整个屏幕。在 iOS 6 中,Apple 添加了对父 View Controller 和 subview Controller 的支持。您可以让另一个 View Controller 成为您的 child 并将其内容 View 添加到您的 child 。
如果您要使用选项 3,那么这就是您需要做的。如果你不这样做,你会遇到各种各样的问题。
甚至支持 Storyboard中内置的父/ subview Controller 。您可以将容器 View 添加到 View Controller ,然后控制从容器 View 拖动到另一个 View Controller 的场景。当您这样做时,系统会创建一个“嵌入 segue”,在容器 View 中设置 subview Controller 并为您连接父/子关系。
当您希望新的 View Controller 替换或至少覆盖第一个 View Controller 时,您的前 2 个选项是。选项 3 用于当您希望屏幕的某个区域由另一个 View Controller 管理时。
选项 3(使用 subview Controller )确实意味着两个 View Controller 将同时处于事件状态并在内存中,因此您不能像在推送中那样释放覆盖的 View Controller 的数据存储,而它处于非事件状态或模态演示。但是,除非您的 View Controller 拥有并呈现巨大的数据结构,否则这并不是什么大问题。在推送和模态演示中,被覆盖的 View Controller 无论如何都会停留在内存中,等待被发现。您必须采取特殊步骤才能在 View Controller 的 View 被覆盖时释放任何内存,然后在它再次显示时重新分配它 - 这是不寻常的。
关于ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693489/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |