我通过在UISplitViewController
方法中编写以下代码,在现有ViewController
中创建并加载了viewDidLoad
:
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];
除了没有在iPad的边框中绘制splitController之外,一切都很好,屏幕顶部和视图顶部之间有一个空格。即使我旋转iPad,左侧面板也存在同样的问题。
SplitViewController
没有xib文件,当我为另一个更改添加的视图时,一切都正确显示。
可能导致此问题的任何想法?
备注:
在模拟器中多次编译和运行项目会导致SplitViewController
有时没有任何问题地显示,而其他项目在屏幕的任何边缘和视图之间都有空格。在iPad上运行会导致同样的问题。
答案 0 :(得分:1)
首先..为什么要实现容器视图控制器?我想你只想自己展示splitViewController,对吧?不要自己添加视图。
而是在窗口上正确设置为rootViewController
(最好是applicationDidFinishLaunching
)。
self.window.rootViewController = splitViewController;
标准情况下不需要容器视图控制器。所以你永远不需要使用以下方法:
addChildViewController:
removeFromParentViewController
willMoveToParentViewController:
didMoveToParentViewController:
检查documentation of UIViewController。
如果您真的想要实现容器视图控制器,那么您需要自己处理布局。所以你需要自己定位/调整另一个控制器的视图。根据您是使用AutoLayout还是自动调整大小,您需要设置正确的约束/标记。