Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当局部视图控制器可见时,从主视图控制器中删除UIBarButtonim_Ios_Objective C_Uisplitviewcontroller_Uibarbuttonitem_Size Classes - Fatal编程技术网

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

Ios 当局部视图控制器可见时,从主视图控制器中删除UIBarButtonim,ios,objective-c,uisplitviewcontroller,uibarbuttonitem,size-classes,Ios,Objective C,Uisplitviewcontroller,Uibarbuttonitem,Size Classes,我正在将我的视图控制器转换成一个带有通用故事板的分割视图控制器,以便在屏幕上同时显示两个视图,这两个视图只会出现在iPad上——iPhone上只会显示一个视图。我遇到的情况是,只有当屏幕上只有一个视图控制器时,UIBarButtonItem才相关。当拆分视图控制器中的两个视图控制器都可见时,我希望删除或隐藏此按钮 我不能使用大小类来实现这一点,因为我要删除的按钮位于主视图控制器中(实际上,我在主视图和详细视图中都有应该删除的按钮),而主视图控制器的大小类不会为常规w常规h。另外,Interfac

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

我不能使用大小类来实现这一点,因为我要删除的按钮位于主视图控制器中(实际上,我在主视图和详细视图中都有应该删除的按钮),而主视图控制器的大小类不会为常规w常规h。另外,Interface Builder没有为
UIBarButtonItem
s提供“已安装”选项,我无法在代码中检查大小类,因为该应用程序也将在iOS 7上运行


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

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