如何使用 uisplitviewcontroller 在纵向模式下并排设置主视图/详细视图
Posted
技术标签:
【中文标题】如何使用 uisplitviewcontroller 在纵向模式下并排设置主视图/详细视图【英文标题】:How can i set master/detail view side by side in portrait mode using uisplitviewcontroller 【发布时间】:2021-10-18 10:28:05 【问题描述】:我正在使用 ios 14 附带的新 UISplitViewController,如下所示:
let splitViewController = UISplitViewController(style: .doubleColumn)
splitViewController.preferredDisplayMode = .oneBesideSecondary
let primaryVC = PrimaryViewController()
splitViewController.setViewController(primaryVC, for: .primary)
let secondaryVC = SecondaryViewController()
splitViewController.setViewController(secondaryVC, for: .secondary)
它按预期工作,但我想得到一个类似的结果:
风景 我只想在 secondaryViewController 中有一个展开图标来隐藏或显示侧边栏,正如您可能从 iPad 的 Apple Notes 应用程序中知道的那样。我想隐藏/删除默认的侧边栏图标。
肖像 我想要并排的主要和次要视图。使用新的 UISplitViewController,主视图总是折叠起来,并且您会在 NavigationBar 中获得一个“返回”按钮。
那么有没有一种方法来操作或自定义新的 UISplitViewController 以获得结果,如上所述?
我尝试了什么 像这样切换到“经典” UISplitViewController:
let splitViewController = UISplitViewController(style: .unspecified)
但使用 unspecified
样式时,我收到以下运行时错误:
API misuse. -initWithStyle: may not be used with UISplitViewControllerStyleUnspecified
【问题讨论】:
【参考方案1】:我认为在您的情况下,样式应该是 doubleColumn
,因为这是您想要在纵向和横向模式下实现的。
尝试在UISplitViewControllerDelegate
中实现这个方法:
optional func splitViewController(_ splitViewController: UISplitViewController,
collapseSecondary secondaryViewController: UIViewController,
onto primaryViewController: UIViewController) -> Bool
如果尚未设置,请设置您的 UISplitViewController's
委托。如果您不想折叠拆分视图控制器,则返回 false(这意味着如果不折叠,它将显示两列;这是您的情况)。
【讨论】:
以上是关于如何使用 uisplitviewcontroller 在纵向模式下并排设置主视图/详细视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]
如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?