【发布时间】:2021-01-04 20:38:52
【问题描述】:
我有一个带有故事板的简单应用程序,其中只有一个从 UI 对象列表中新拖放的拆分视图控制器。
当我在 iPhone 模拟器上启动应用程序时,会首先出现详细视图。
如何确保在应用启动时显示主视图?有没有办法在故事板上安排它?
【问题讨论】:
标签: ios swift uisplitviewcontroller master-detail
我有一个带有故事板的简单应用程序,其中只有一个从 UI 对象列表中新拖放的拆分视图控制器。
当我在 iPhone 模拟器上启动应用程序时,会首先出现详细视图。
如何确保在应用启动时显示主视图?有没有办法在故事板上安排它?
【问题讨论】:
标签: ios swift uisplitviewcontroller master-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,并且还向后兼容早期的 iOS 版本。
【讨论】: