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

标签 ios objective-c iphone storyboard

请参阅下面的附图以获得更多理解。

viewControllers

场景是:我有五个 View Controller

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

现在 MidContainerViewController 已经得到了嵌入 FirstViewController 的容器。

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

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

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

目标 1:“FirstViewController”和“SecondViewController”不应让整个屏幕与 MidContainerViewController 上的 bottomView 图像重叠。

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

解决方案:

1) 目前我已经将根“View Controller”嵌入到 navigationController 中。目标 2 没问题。它成功导航回根目录。但是达不到目标1

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

非常感谢任何建议。

谢谢,

最佳答案

假设您在不使用 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 childViewControlllers View 框架占据整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526084/

相关文章:

ios - Swift:未设置整数值。

iphone - 如何像 [self Method_Name]; 一样使用 self 调用方法;当方法名称很长时 Like -(void)imagePickerController : (UIImagePickerController *)

ios - IOS8.0 UISearchController使用方法

objective-c - 无法在设备上运行代码

ios - 未调用 PHPhotoLibrary 更改观察器

ios - 访问/获取已存在的 UIViewController 的引用(模拟后退按钮)

iphone - 在 Monotouch 中使用陀螺仪?

iphone - 使用 TPKeyboardAvoidingScrollView 移动键盘的文本字段不起作用

ios - 在 Xcode 6 的现有 Objective-C iOS 项目中使用 JUCE 模块

iphone - 适用于 iOS 的增强现实和快速前置摄像头应用程序