检测主视图和详细视图控制器何时在屏幕上?

Jor*_*n H 11 uisplitviewcontroller ios uiaccessoryview

我已经UISplitViewController在Xcode 6中实现了使用通用故事板.UISplitViewController现在运行iOS 8的iPhone支持,默认情况下,一次只有一个视图控制器在屏幕上.

我需要知道主屏幕控制器和详细视图控制器何时都在屏幕上(iPad).我需要UITableViewCell在屏幕上删除公开指示符- 只有当主视图控制器在屏幕上(iPhone)时才会呈现它们,就像设置应用程序一样.

我可以简单地检测设备,只在iPhone上添加它们,但不建议这样做.新设备可能只显示一个视图控制器而不能识别为电话.另一种认为是检测,如果self.splitViewControllernil,但不会工作,因为它不会nil在iPhone也不iPad的,因为它实际上是在iPhone上的一个拆分视图控制器.

是否可以检测主屏幕控制器和详细视图控制器何时同时在屏幕上可见?

Sch*_*cal 18

UISplitViewController

@property(nonatomic, readonly, getter=isCollapsed) BOOL collapsed

当拆分视图控制器内容在语义上折叠到单个容器中时,此属性设置为YES.当拆分视图控制器从水平常规环境转换为水平紧凑环境时,会发生折叠.折叠后,拆分视图控制器报告其viewControllers属性中只有一个子视图控制器.另一个视图控制器在委托对象的帮助下折叠到另一个视图控制器的内容中或临时丢弃.折叠时,displayMode属性不会影响拆分视图控制器界面的外观.

当拆分视图控制器能够同时显示其两个子视图控制器时,此属性的值为NO,即使它现在没有同时显示它们.在此扩展模式下,拆分视图控制器的子视图控制器的配置由displayMode属性确定.此外,viewControllers属性包含主视图控制器和辅助视图控制器.

在从展开界面到折叠界面的转换期间,此属性的值为NO,直到崩溃转换完成并且已调用所有相关委托方法为止.类似地,当转换回扩展接口时,值为YES,直到转换完成.

从课堂参考.

感谢Frederik A. Winkelsdorf:

应该注意的是,.collapsed如果a DetailViewController被缩放以覆盖整个屏幕,则也会报告错误 .如果您真的想知道两者是否都可见,请在.collapsed属性旁边查看splitViewController.displayMode == UISplitViewControllerDisplayMode.AllVisible.我发现它在处理iPhone 6 Plus横向布局时很有用.

  • 应该注意的是,如果DetailViewController被缩放以覆盖整个屏幕,则.collapsed也会报告为false.如果您真的想知道两者是否都可见,请在.collapsed属性旁边查看splitViewController.displayMode == UISplitViewControllerDisplayMode.AllVisible.我发现它在处理iPhone 6 Plus Landscape布局时很有用. (10认同)