代码之家  ›  专栏  ›  技术社区  ›  Jordan H

当局部视图控制器可见时,从主视图控制器中删除UIBarButtonItem

  •  1
  • Jordan H  · 技术社区  · 10 年前

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

    我不能使用大小类来做这件事,因为我想要删除的按钮在主视图控制器中(实际上我在主视图和细节中都有应该删除的按钮),它没有Regular w Regular h的大小类。Plus Interface Builder不提供“已安装”选项 栏按钮项 s、 我无法在代码中检查大小类,因为该应用程序也将在iOS 7上运行。

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

    1 回复  |  直到 10 年前
        1
  •  1
  •   Jordan H    10 年前

    这是一个很好的解决方案,适用于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;
        }
    }