菜鸟教程小白 发表于 2022-12-13 13:24:20

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


                                            <p><p>假设我有两个页面,其中包含两个 <code>UIViewControllers</code>、<strong><code>UIViewController1</code></strong> 和 <strong><code>UIViewController2</code></strong >.</p>

<p>如果我想在 <code>UIViewController1</code> 上显示 <code>UIViewController2</code> 我有三个选项:</p>

<ol>
<li>使用 <code>UINavigationController</code> <code>pushViewController</code>.</li>
<li>使用 <code>presentViewController</code>。</li>
<li><code>addSubView</code> : <code>UIViewController1.view.addSubView(UIViewController2.view)</code></li>
</ol>

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

<p>这三个选项在性能方面有什么区别吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在 iOS 6 之前,您不应该执行选项 3。 ViewController 旨在控制整个屏幕。在 iOS 6 中,Apple 添加了对父 ViewController 和 subviewController 的支持。您可以让另一个 ViewController 成为您的 child 并将其内容 View 添加到您的 child 。</p>

<p>如果您要使用选项 3,那么这就是您需要做的。如果你不这样做,你会遇到各种各样的问题。</p>

<p>甚至支持 Storyboard中内置的父/ subviewController 。您可以将容器 View 添加到 ViewController ,然后控制从容器 View 拖动到另一个 ViewController 的场景。当您这样做时,系统会创建一个“嵌入 segue”,在容器 View 中设置 subviewController 并为您连接父/子关系。</p>

<p>当您希望新的 ViewController 替换或至少覆盖第一个 ViewController 时,您的前 2 个选项是。选项 3 用于当您希望屏幕的某个区域由另一个 ViewController 管理时。 </p>

<p>选项 3(使用 subviewController )确实意味着两个 ViewController 将同时处于事件状态并在内存中,因此您不能像在推送中那样释放覆盖的 ViewController 的数据存储,而它处于非事件状态或模态演示。但是,除非您的 ViewController 拥有并呈现巨大的数据结构,否则这并不是什么大问题。在推送和模态演示中,被覆盖的 ViewController 无论如何都会停留在内存中,等待被发现。您必须采取特殊步骤才能在 ViewController 的 View 被覆盖时释放任何内存,然后在它再次显示时重新分配它 - 这是不寻常的。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34693489/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34693489/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?