菜鸟教程小白 发表于 2022-12-13 04:01:48

ios - ContainerView childViewControllers View 框架占据整个屏幕


                                            <p><p>请看下图了解更多。</p>

<p> <img src="/image/4RGq4.png" alt="viewControllers"/> </p>

<p>场景是:我有五个 ViewController </p>

<p>每个 View 在推送时导航到下一个 ViewController </p>

<p>现在 MidContainerViewController 已经获得了嵌入 FirstViewController 的 Container。</p>

<p>MidContainerViewController 的底部是一个静态 View ,在进一步导航时不应更改。 </p>

<p>在导航时,FirstViewController 的大小应该等于容器</p>

<p>当我从 FirstViewController 导航到 SecondViewController 时,它也应该是 Container 的大小。 </p>

<p>目标 1:'FirstViewController' 和 'SecondViewController' 不应将整个屏幕与 MidContainerViewController 上的底部 View 图像重叠。</p>

<p>目标 2:我必须在 SecondViewController 上的最后一次“推送”时弹出到根“ ViewController ”。</p>

<p>解决方案:</p>

<p>1) 目前我已将根“ ViewController ”嵌入到 navigationController。目标 2 没有问题。它成功导航回根目录。但无法实现目标 1</p>

<p>2) 如果我将“第一个 ViewController ”也嵌入到 navigationController 中,目标 1 就实现了,但开始面临目标 2 的问题。它只弹出到“MidContainerViewController”。</p>

<p>非常感谢任何建议。</p>

<p>谢谢,</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>假设您在不使用 Storyboard 的情况下手动处理推送/弹出事件,我建议您不要从 <code>MidContainerViewController</code> 推送 <code>FirstViewController</code>。通过以下代码添加下一个 ViewController 作为 subviewController :</p>

<pre><code>FirstViewController *firstViewController = [ initWithNibName:@&#34;FirstViewController&#34; bundle:];

UINavigationController *navController = [ initWithRootViewController:firstViewController];

;
;
;
;
</code></pre>

<p>通过上面的代码,您将实现您的第一个目标。在上面的代码中,<code>FirstViewController</code> 在它自己独立的导航 Controller 对象上被初始化,所以它会有不同的导航栈。因此,如果您进一步从 <code>FirstViewController</code> 和 <code>SecondViewController</code> 推送和弹出,您的 View 将不会占据整个屏幕。但是,如果您从最后一个 ViewController 调用 <code>popToRootViewController</code>,您的 Root ViewController 将是该特定容器 View 中的 <code>FirstViewController</code>。</p>

<p>要实现第二个目标,您必须创建一个公共(public)属性来包含 <code>AppDelegate</code> 类中主导航 Controller 对象的引用。从该导航 Controller 对象创建您的 Root ViewController 。在您的最后一个 ViewController 中,您必须从 <code>AppDelagate</code> 类中获取该导航 Controller 属性的引用,然后从该对象调用 <code>popToRootViewController</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - ContainerView childViewControllersView 框架占据整个屏幕,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27526084/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27526084/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - ContainerView childViewControllers View 框架占据整个屏幕