【问题标题】:Show master view at startup and detail view on "slide over"在启动时显示主视图,在“滑过”时显示详细视图
【发布时间】:2019-09-20 02:42:57
【问题描述】:

我有一个拆分视图控制器,在水平紧凑模式下,我希望它在启动时显示主视图控制器。默认情况下,拆分视图控制器将在启动时加载详细视图。这可以通过这个 sn-p 轻松更改:

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
  return true
}

这对我来说很好,但是当“滑过”一个新视图并从常规水平宽度变为紧凑视图时,会显示主视图而不是详细视图。我希望继续显示详细视图,因为用户已经选择了它。示例:

当我在上面的 sn-p 中返回 false 时,我通过滑动获得了所需的行为,但显然现在应用程序将从细节而不是主控开始。以collapseSecondaryfalse 的示例:

有没有办法两全其美?首先展示主视图控制器,然后在从常规水平宽度变为紧凑宽度时显示详细视图控制器。

【问题讨论】:

    标签: ios uitableview cocoa-touch uikit uisplitviewcontroller


    【解决方案1】:

    如果在接口更改时调用splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool,请尝试此操作。

    func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
        BOOL runningInSplitView //do logic check here based on windows bounds
        if(!runningInSplitView)
         return true;
        return false;
    }
    
    
    

    否则,您必须正确处理使用 optional func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController? 及其对应项

    【讨论】:

    • 第一个。由于我已经知道是否选择了单元格的逻辑,因此我只需检查我的详细信息(secondaryViewController),如果尚未选择单元格,它将返回 false。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2016-10-25
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多