启动时显示主视图,"slide over" 时显示详细视图
Show master view at startup and detail view on "slide over"
我有一个拆分视图控制器,在水平紧凑模式下,我希望它在启动时显示主视图控制器。默认情况下,拆分视图控制器将在启动时加载详细视图。这可以通过以下代码片段轻松更改:
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
这对我来说很好,但是当 "sliding over" 一个新视图并且从常规水平宽度变为紧凑视图时,会显示主视图而不是详细视图。我希望详细视图继续显示,因为用户已经选择了它。示例:
当我在上面的代码片段中 return false
时,我通过滑动获得了所需的行为,但显然现在应用程序将从细节而不是主控开始。 collapseSecondary
为 false
的示例:
有没有办法两全其美?首先展示主视图控制器,然后在从常规水平宽度变为紧凑宽度时显示细节视图控制器。
如果在接口更改时调用 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?
及其对应项
我有一个拆分视图控制器,在水平紧凑模式下,我希望它在启动时显示主视图控制器。默认情况下,拆分视图控制器将在启动时加载详细视图。这可以通过以下代码片段轻松更改:
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
这对我来说很好,但是当 "sliding over" 一个新视图并且从常规水平宽度变为紧凑视图时,会显示主视图而不是详细视图。我希望详细视图继续显示,因为用户已经选择了它。示例:
当我在上面的代码片段中 return false
时,我通过滑动获得了所需的行为,但显然现在应用程序将从细节而不是主控开始。 collapseSecondary
为 false
的示例:
有没有办法两全其美?首先展示主视图控制器,然后在从常规水平宽度变为紧凑宽度时显示细节视图控制器。
如果在接口更改时调用 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?
及其对应项