【问题标题】:Remove UIBarButtonItem from master view controller when detail view controller is visible当详细视图控制器可见时,从主视图控制器中删除 UIBarButtonItem
【发布时间】:2014-08-07 21:05:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c uisplitviewcontroller uibarbuttonitem size-classes


    【解决方案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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多