我正在将我的视图控制器转换为带有通用故事板的分割视图控制器,以同时在屏幕上显示两个视图,这两个视图仅显示在iPad上 - 只有一个在iPhone上可见。我有一种情况,UIBarButtonItem
仅在屏幕上只有一个视图控制器时才有意义。当分割视图控制器中的两个视图控制器都可见时,我希望删除或隐藏此按钮。
我不能使用Size Classes来执行此操作,因为我想要删除的按钮位于主视图控制器中(实际上我在主视图和细节中都有按钮应该被删除),它不会有大小常规w常规h。 Plus Interface Builder无法提供"已安装的" UIBarButtonItem
的选项,我无法检查代码中的大小类,因为该应用程序也可以在iOS 7上运行。
当主屏幕和详细视图控制器都在屏幕上时,如何删除/隐藏UIBarButtonItem
?或者我无法在IB中添加此按钮,然后在代码中添加它认为合适,但我怎么知道两个视图控制器是否都在屏幕上?
答案 0 :(得分:1)
这是一个很好的解决方案,适用于iPhone和iPad上的iOS 8和iOS 7。您只需检测是否存在拆分视图控制器,如果存在,请检查它是否已折叠。如果它已折叠,您知道屏幕上只有一个视图控制器。知道了这些信息,你可以做任何你需要的事情。
//remove right bar button item if more than one view controller is on screen
if (self.splitViewController) {
if ([UISplitViewController instancesRespondToSelector:@selector(isCollapsed)]) {
if (!self.splitViewController.collapsed) {
self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
}
} else {
self.navigationController.navigationBar.topItem.rightBarButtonItem = nil;
}
}