在启动时显示主视图,并在“滑过”上显示详细视图

时间:2019-05-01 14:28:25

标签: ios uitableview cocoa-touch uikit uisplitviewcontroller

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

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

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

Example GIF

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

Example GIF

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

1 个答案:

答案 0 :(得分: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?及其对应版本

正确处理