如何让 Storyboard 上的 UISplitViewController 先显示主视图?

How to let UISplitViewController on Storyboard show master view first?

我有一个简单的应用程序,它有一个故事板,只有一个拆分视图控制器刚从 UI 对象列表中拖放。

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

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

为了使主视图默认在 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,并且也向后兼容早期的 iOS 版本。