gpt4 book ai didi

ios - 使用 UINavigationController 比使用 addSubView 添加 View 有什么好处?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:09:00 30 4
gpt4 key购买 nike

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

如果我想在 UIViewController1 之上显示一个 UIViewController2 我有三个选择:

  1. 使用 UINavigationController pushViewController
  2. 使用 presentViewController
  3. 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 的场景。当您这样做时,系统会创建一个“嵌入转场”,在容器 View 内设置 subview Controller 并为您连接父/子关系。

您的前两个选项适用于您希望新的 View Controller 替换或至少覆盖第一个 View Controller 的情况。选项 3 适用于您希望屏幕的某个区域由另一个 View Controller 管理的情况。

选项 3(使用 subview Controller )确实意味着两个 View Controller 将同时处于事件状态并在内存中,因此您不能像在推送中那样在非事件状态时释放覆盖的 View Controller 的数据存储或模态呈现。然而,除非你的 View Controller 持有并呈现巨大的数据结构,否则这不是什么大问题。在推送和模态呈现中,被覆盖的 View Controller 无论如何都会留在内存中,等待被发现。您必须采取特殊步骤,以便在覆盖 View Controller 的 View 时释放所有内存,然后在再次显示时重新分配它 - 这是不寻常的。

关于ios - 使用 UINavigationController 比使用 addSubView 添加 View 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693489/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com