OStack程序员社区-中国程序员成长平台

标题: ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 13:24
标题: ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?

假设我有两个页面,其中包含两个 UIViewControllersUIViewController1UIViewController2.

如果我想在 UIViewController1 上显示 UIViewController2 我有三个选项:

  1. 使用 UINavigationController pushViewController.
  2. 使用 presentViewController
  3. addSubView : UIViewController1.view.addSubView(UIViewController2.view)

如果我需要在我的 View 之间进行转换,我更喜欢第三个选项,因为它让我可以更好地控制 View 。

这三个选项在性能方面有什么区别吗?



Best Answer-推荐答案


在 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