ios - UISplitViewController 未正确显示

标签 ios objective-c ipad uisplitviewcontroller

我通过在 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/

相关文章:

ios - 定位 MKMapView 以一次显示多个注释

objective-c - 注册应用程序 viewDidAppear/等的通知?

ipad - 触摸事件是否不适用于 iPad Safari 中的文本输入元素?

ios - 适用于 iOS 的离线 MapKit 解决方案

ios - 在连接 iPad 4 的情况下在 Xcode 中执行存档

ios - 更改 WKWebView 中的键盘返回键

ios - UIColor 返回暗模式颜色的错误值

ios - Realm() 究竟是如何工作的?

javascript - 检查 ios phonegap 中是否存在相机

objective-c - 从我的iOS 5应用打开Twitter应用