1

我正在将我的视图控制器转换为带有通用情节提要的拆分视图控制器,以同时在屏幕上显示两个视图,这只会出现在 iPad 上 - 只有一个会在 iPhone 上可见。我有一种情况,UIBarButtonItem仅当屏幕上只有一个视图控制器时才相关。当拆分视图控制器中的两个视图控制器都可见时,我希望删除或隐藏此按钮。

我不能使用 Size Classes 来执行此操作,因为我要删除的按钮位于主视图控制器中(实际上我在主视图和细节中都有应该删除的按钮),它不会有 Regular w Regular 的大小类H。Plus Interface Builder 没有为UIBarButtonItems 提供“已安装”选项,并且我无法检查代码中的大小类,因为该应用程序也将在 iOS 7 上运行。

UIBarButtonItem当主视图控制器和详细视图控制器都在屏幕上时,如何删除/隐藏?或者我无法在 IB 中添加此按钮,然后在认为合适时将其添加到代码中,但我怎么知道两个视图控制器是否都会在屏幕上?

4

1 回答 1

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;
    }
}
于 2014-08-22T16:27:54.513 回答