首页 > 解决方案 > 如何让 Storyboard 上的 UISplitViewController 先显示主视图?

问题描述

我有一个带有情节提要的简单应用程序,其中仅从 UI 对象列表中拖放了一个拆分视图控制器。

当我在 iPhone 模拟器上启动应用程序时,详细视图首先出现。

如何确保在应用启动时显示主视图?有没有办法在故事板上安排它?

标签: iosswiftuisplitviewcontrollermaster-detail

解决方案


为了使主视图在 iPhone 上默认折叠,重写一些委托方法:

class SplitViewController : UISplitViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
    }
}

extension SplitViewController : UISplitViewControllerDelegate {

    // The default for this is .secondary!!
    @available(iOS 14.0, *)
    public func splitViewController(_ svc: UISplitViewController, 
        topColumnForCollapsingToProposedTopColumn 
        proposedTopColumn: UISplitViewController.Column) -> UISplitViewController.Column {
        return .primary
    }

    // default is false!
    public func splitViewController(_ splitViewController: UISplitViewController,
                             collapseSecondary secondaryViewController:UIViewController,
                             onto primaryViewController:UIViewController) -> Bool {
        return true
    }
}

以前您会使用preferredDisplayMode = .primaryOverlay,但现在已弃用。该代码适用于 iOS 14,并且也向后兼容早期的 iO​​S 版本。


推荐阅读