首页 > 解决方案 > 在启动时显示主视图,在“滑过”时显示详细视图

问题描述

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

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

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

示例 GIF

然后,当我返回false上面的代码片段时,我会通过滑动获得所需的行为,但显然现在应用程序将从细节而不是母版开始。collapseSecondary带有as 的示例false

示例 GIF

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

标签: iosuitableviewcocoa-touchuikituisplitviewcontroller

解决方案


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;
}


否则,您将必须正确处理 usingoptional func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController?及其对应物


推荐阅读