0

我通过在方法中编写以下代码来创建并加载一个UISplitViewController现有的:ViewControllerviewDidLoad

LeftPanelViewController *leftPanel = [[LeftPanelViewController alloc] initWithNibName:@"LeftPanelViewController" bundle:nil];
FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:firstView];

UISplitViewController *splitController = [[UISplitViewController alloc] init];
splitController.viewControllers = [NSArray arrayWithObjects:leftPanel, self.navigationController, nil];

[self.view addSubview:splitController.view];
[self addChildViewController:splitController];

[splitController didMoveToParentViewController:self];

一切都很好,除了 splitController 没有被绘制在 iPad 的边框中,屏幕顶部和视图顶部之间有一个空间。即使当我旋转 iPad 时,左侧面板也有同样的问题。

SplitViewController没有 xib 文件,当我将添加的视图更改为另一个有时,一切都正确显示。

关于可能导致此问题的任何想法?

注意: 在模拟器中多次编译和运行项目会导致SplitViewController有时显示没有任何问题,而有时在屏幕的任何边缘和视图之间有空格。在 iPad 上运行总是会出现同样的问题。

4

1 回答 1

1

首先..你为什么要实现一个容器视图控制器?我猜你只是想自己呈现 splitViewController ,对吧?不要自己添加视图。

而是正确地将其设置为您rootViewController的窗口(最好在 中applicationDidFinishLaunching)。

self.window.rootViewController = splitViewController;

在标准情况下不需要容器视图控制器。因此,您永远不需要使用以下方法:

addChildViewController:
removeFromParentViewController
willMoveToParentViewController:
didMoveToParentViewController:

检查UIViewController 的文档


如果你真的想实现一个容器视图控制器,那么你需要自己处理布局。所以你需要自己定位/调整另一个控制器的视图。根据您是使用 AutoLayout 还是 autoresizing,您需要设置正确的约束/标志。

于 2013-09-05T08:49:19.813 回答