如何让 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 版本。
我有一个简单的应用程序,它有一个故事板,只有一个拆分视图控制器刚从 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 版本。