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

标题: ios - ContainerView childViewControllers View 框架占据整个屏幕 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:01
标题: ios - ContainerView childViewControllers View 框架占据整个屏幕

请看下图了解更多。

viewControllers

场景是:我有五个 View Controller

每个 View 在推送时导航到下一个 View Controller

现在 MidContainerViewController 已经获得了嵌入 FirstViewController 的 Container。

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

在导航时,FirstViewController 的大小应该等于容器

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

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

目标 2:我必须在 SecondViewController 上的最后一次“推送”时弹出到根“ View Controller ”。

解决方案:

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

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

非常感谢任何建议。

谢谢,



Best Answer-推荐答案


假设您在不使用 Storyboard 的情况下手动处理推送/弹出事件,我建议您不要从 MidContainerViewController 推送 FirstViewController。通过以下代码添加下一个 View Controller 作为 subview Controller :

FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName"FirstViewController" bundle:[NSBundle mainBundle]];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:firstViewController];

[self addChildViewController:navController];
[navController.view setFrame:CGRectMake(0.0f, 0.0f, _containerView.frame.size.width, _containerView.frame.size.height)];
[_containerView addSubview:navController.view];
[navController didMoveToParentViewController:self];

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

要实现第二个目标,您必须创建一个公共(public)属性来包含 AppDelegate 类中主导航 Controller 对象的引用。从该导航 Controller 对象创建您的 Root View Controller 。在您的最后一个 View Controller 中,您必须从 AppDelagate 类中获取该导航 Controller 属性的引用,然后从该对象调用 popToRootViewController

关于ios - ContainerView childViewControllers View 框架占据整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526084/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4