Iphone 如何禁用uibarbuttonim?

Iphone 如何禁用uibarbuttonim?,iphone,ios,Iphone,Ios,我有一个不想残疾的维吾尔人。简短版本:当我打电话时 [myBarButtonItem setEnabled:NO]; 什么也没发生 myBarButtonItem是myVIewController中的IBOutletmyViewController已作为对象添加到Interface Builder中的MainWindow。myBarButtonItem出口已连接到BarButtonItem,并设置了相应的@syntesize和属性行 @property (nonatomic, retain)

我有一个不想残疾的维吾尔人。简短版本:当我打电话时

[myBarButtonItem setEnabled:NO];
什么也没发生

myBarButtonItem
myVIewController
中的IBOutlet
myViewController
已作为对象添加到Interface Builder中的
MainWindow
myBarButtonItem
出口已连接到BarButtonItem,并设置了相应的
@syntesize
属性

@property (nonatomic, retain) IBOutlet UIBarButtonItem *myBarButtonItem;
在myViewController.m中

@synthesize myBarButtonItem;
有人知道为什么上面的
setEnabled
方法没有影响吗?谢谢


更新:修正了!不知道为什么,但很明显,没有设置插座。我将我的应用程序委托用作UIBarButtonim的父对象,所有这些都已解决。

如果您的工具栏有一个IBOutlet(并且您已检查以确保它不是零),请尝试:


您可以从UIViewController内部禁用左导航按钮,如下所示,而无需使用任何IBOutlet:

self.navigationItem.leftBarButtonItem.enabled = NO;
要禁用右导航按钮,请执行以下操作:

self.navigationItem.rightBarButtonItem.enabled = NO;
Swift3

self.navigationItem.rightBarButtonItem?.isEnabled = false
在我的例子(Swift)中,我添加了2个Barbuttonims作为一个数组-因此为了禁用它们,这就成功了

    navigationItem.rightBarButtonItems?.first?.enabled = false
    navigationItem.rightBarButtonItems?.last?.enabled = false

我用了一个不同的解决方案(Swift 4.2)来解决我的右巴布托

我有3个按钮,所以使用了for循环,然后扩展了UINavigationItem,这样我就可以在整个应用程序中使用它

extension UINavigationItem {
func setRightBarButtonItems(isEnabled:Bool){
    for button in self.rightBarButtonItems ?? [UIBarButtonItem()] {
        button.isEnabled = isEnabled
    }
}
然后我可以从我的TableViewController调用它

navigationItem.setRightBarButtonItems(isEnabled: false)

您是否确实在调试器中验证了
myBarButtonItem
不是
nil
?您如何在@interface中声明backing字段?为什么要使用@synthesis myBarButtonItem;在头文件“myViewController.h”中。这不应该在您的实现中吗?我想一旦你搬家,它就会把它修好。我是iOS开发新手,但每当我在头文件中有一个属性时,相应的合成器就会出现在我的.m(实现)文件.Oops中,这是一个输入错误。它在执行中。
navigationItem.setRightBarButtonItems(isEnabled: false)