【问题标题】:How can i set master/detail view side by side in portrait mode using uisplitviewcontroller如何使用 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

【问题讨论】:

    标签: swift uikit uisplitviewcontroller


    【解决方案1】:

    我认为在您的情况下,样式应该是 doubleColumn,因为这是您想要在纵向和横向模式下实现的。

    尝试在UISplitViewControllerDelegate中实现这个方法:

    optional func splitViewController(_ splitViewController: UISplitViewController, 
                  collapseSecondary secondaryViewController: UIViewController, 
                                 onto primaryViewController: UIViewController) -> Bool
    

    如果尚未设置,请设置您的 UISplitViewController's 委托。如果您不想折叠拆分视图控制器,则返回 false(这意味着如果不折叠,它将显示两列;这是您的情况)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2016-05-28
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多