我通过在 viewDidLoad
方法中编写以下代码,在现有 ViewController
中创建并加载了 UISplitViewController
:
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 的边框中,屏幕顶部和 View 顶部之间有一个空间。即使我旋转 iPad,左侧面板也有同样的问题。
SplitViewController
没有 xib 文件,当我更改另一个具有 xib 文件的添加 View 时,所有内容都会正确显示。
有什么可能导致此问题的想法吗?
注意事项:
在模拟器中多次编译和运行该项目会导致 SplitViewController
有时显示没有任何问题,而另一些则在屏幕的任何边缘和 View 之间存在空格。在 iPad 上运行总是导致同样的问题。
最佳答案
首先..为什么要实现容器 View Controller ?我猜你只是想单独展示 splitViewController,对吗?不要自己添加 View 。
而是将其正确设置为窗口上的 rootViewController
(最好在 applicationDidFinishLaunching
中)。
self.window.rootViewController = splitViewController;
标准情况下不需要容器 View Controller 。因此您永远不需要使用以下方法:
addChildViewController:
removeFromParentViewController
willMoveToParentViewController:
didMoveToParentViewController:
检查documentation of UIViewController .
如果您确实想实现容器 View Controller ,那么您需要自己处理布局。因此,您需要自己调整另一个 Controller 的 View 的位置/大小。根据您是否使用自动布局或自动调整大小,您需要设置正确的约束/标志。
关于ios - UISplitViewController 未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631261/