• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:01:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

请看下图了解更多。

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap