swift 可靠地知道UISplitViewController何时显示主视图

iaqfqrcu  于 5个月前  发布在  Swift
关注(0)|答案(1)|浏览(37)

我有一个支持iPhone和iPad的应用程序,它使用嵌入式UISplitViewController
我想手动控制侧边栏的可见性,所以我添加了一个按钮来打开/关闭它。然而,事实证明,iPhone和iPad对待这些值的方式不同。
在iPad上,您可以检查.displayMode的值,以查看拆分视图是否仅呈现次要视图:

if editorSplitView.displayMode == .secondaryOnly { // ...

字符串
但这在iPhone上不起作用,无论设置如何,它总是说显示模式是.oneBesideSecondary。即使主视图打开,该值在iPhone上也保持不变。检查splitView.isCollapsed也没有帮助,因为在较小的屏幕上,无论如何,任何视图都是折叠的。
根据文档,这是预期行为:
当collapsed为YES时,此属性的值将被忽略。一个折叠的拆分视图界面只包含一个视图控制器,因此显示模式是多余的。
.但并没有真正告诉我如何确定哪个视图是可见的。
我知道实现你自己的显示/隐藏按钮有点不正统,但我有一个合理的用例。什么是实际的,首选的方式来了解这两个设备上的显示模式?

guz6ccqo

guz6ccqo1#

你不需要使用任何拆分视图控制器方法。你可以使用最基本的方法来检查视图控制器是否可见:

if splitViewController.viewControllers.first?.viewIfLoaded?.window == nil {
    // The view is not visible
}

字符串

相关问题