let splitViewController = mainView.instantiateViewControllerWithIdentifier("initial") as! UISplitViewController let rightNavController = splitViewController.viewControllers.last as! UINavigationController let detailViewController = rightNavController.topViewController as! DetailsIpad let leftNavController = splitViewController.viewControllers.first as! UINavigationController let masterViewController = leftNavController.topViewController as! MainViewController masterSplitViewController = masterViewController detailSplitViewController = detailViewController // Override point for customization after application launch. let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem() splitViewController.delegate = self self.window!.rootViewController = splitViewController
当我第一次启动应用程序时,我看到分屏的正确部分占用了所有屏幕:
如果我旋转屏幕,它变得正确设置(可能是因为屏幕上同时显示两个视图):
当我在任何地方设置断点时,我看到右侧的详细信息视图在左侧的主视图(项目列表)之前被加载,尽管没有被直接调用.
我无法更改调用分屏的视图的顺序.如何解决这个问题?
更新:
我可以在显示分割视图控制器之前设置此选项:
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
当我打印时,在分割控制器的ViewDidLoad中:
print(self.preferredDisplayMode.rawValue)
我得到:2,这是AllVisible.但仍然是结果是一样的.
解决方法
// An animatable property that controls how the primary view controller is hidden and displayed. A value of `UISplitViewControllerDisplayModeAutomatic` specifies the default behavior split view controller,which on an iPad,corresponds to an overlay mode in portrait and a side-by-side mode in landscape. @property (nonatomic) UISplitViewControllerDisplayMode preferredDisplayMode NS_AVAILABLE_IOS(8_0);
这是相同定义的关键部分 –
on an iPad,corresponds to an overlay mode in portrait and a side-by-side mode in landscape.
此外,如果要查询UISplitViewController的当前状态(显示模式),您应该使用此属性 –
// The actual current displayMode of the split view controller. This will never return `UISplitViewControllerDisplayModeAutomatic`. @property (nonatomic,readonly) UISplitViewControllerDisplayMode displayMode NS_AVAILABLE_IOS(8_0);
并记住,您无法将其与UISplitViewControllerDisplayModeAutomatic进行比较,因为 –
This will never return
UISplitViewControllerDisplayModeAutomatic
.
我的建议是将preferredDisplayMode设置为所需的值.在你的情况下,您似乎需要主(主)始终可见.所以这里提出的解决方案 –
mySplitVC.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible
为什么首先加载次要(详细)控制器?
如您所见,UISplitViewController实例总是需要一个详细的视图,无论现在是什么显示模式.所以这是一个很好的电话
>先加载细节视图.
>加载主视图(有条件地基于displayMode).
希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。