iOS   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 为什么我不能在第一次运行时在UISplitViewController中放置“Master”和“Detail”视图,但是在旋转时它可以工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个分割视图控制器,其中包含左侧的项目列表和右侧的详细视图. AppDelegate中的相关代码
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.但仍然是结果是一样的.

解决方法

这是UISplitViewController的认行为.仔细看看下面的 –
// 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);

这是相同定义的关键部分 –

此外,如果要查询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进行比较,因为 –

我的建议是将preferredDisplaymode设置为所需的值.在你的情况下,您似乎需要主(主)始终可见.所以这里提出的解决方案 –

@H_858_2@mySplitVC.preferredDisplaymode = UISplitViewControllerDisplaymodeAllVisible

为什么首先加载次要(详细)控制器?

如您所见,UISplitViewController实例总是需要一个详细的视图,无论现在是什么显示模式.所以这是一个很好的电话

>先加载细节视图.
>加载主视图(有条件地基于displaymodE).

希望这可以帮助.

大佬总结

以上是大佬教程为你收集整理的ios – 为什么我不能在第一次运行时在UISplitViewController中放置“Master”和“Detail”视图,但是在旋转时它可以工作?全部内容,希望文章能够帮你解决ios – 为什么我不能在第一次运行时在UISplitViewController中放置“Master”和“Detail”视图,但是在旋转时它可以工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。