我有一个 Split View Controller ,在水平紧凑模式下,我希望它在启动时显示主视图 Controller 。默认情况下, Split View Controller 将在启动时加载详细 View 。这可以很容易地用这个片段来改变:
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
这对我来说很好,但是当“滑过”一个新 View 并从常规水平宽度变为紧凑 View 时,会显示主视图而不是详细 View 。我希望详细 View 继续显示,因为用户已经选择了它。示例:
然后当我在上面的代码片段中返回 false
时,我得到了所需的滑动行为,但显然现在应用程序将从细节而不是主控开始。 collapseSecondary
为 false
的示例:
有没有办法两全其美?首先展示主视图 Controller ,然后在从常规水平宽度变为紧凑宽度时显示细节 View Controller 。
最佳答案
如果 splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool
试试这个在接口(interface)更改时调用。
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?
及其对应物
关于ios - 在启动时显示主视图,在 "slide over"上显示详细 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937837/