在Apple的文档中指出,不支持直接将UISplitViewController.DisplayMode.PrimaryOnly
设置为splitViewController.preferredDisplayMode
。但是,你可以使用其他方法来实现这个功能。
一种方法是通过自定义UISplitViewControllerDelegate
来实现这个功能。你可以在委托方法splitViewController(_:collapseSecondary:onto:)
中判断如果preferredDisplayMode
为.primaryOnly
,则返回true
,否则返回false
。这样,在split视图控制器折叠次要视图控制器时,它将始终只显示主要视图控制器。
下面是一个示例代码:
class SplitViewControllerDelegate: NSObject, UISplitViewControllerDelegate {
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
if splitViewController.preferredDisplayMode == .primaryOnly {
return true
} else {
return false
}
}
}
// 在你的视图控制器中
let splitViewController = UISplitViewController()
let delegate = SplitViewControllerDelegate()
splitViewController.delegate = delegate
splitViewController.preferredDisplayMode = .primaryOnly
这段代码中,我们创建了一个自定义的SplitViewControllerDelegate
类,实现了UISplitViewControllerDelegate
协议,并在splitViewController(_:collapseSecondary:onto:)
方法中检查了splitViewController.preferredDisplayMode
的值。根据需要,我们返回true
或false
来控制split视图控制器的展示。