2010-09-24 82 views
33

我有一个UIBarButtonItem,只是不想被禁用。短版本:当我打电话时如何禁用UIBarButtonItem?

[myBarButtonItem setEnabled:NO]; 

没有任何反应。

myBarButtonItem是一个IBOutlet在myVIewControllermyViewController已作为对象添加到Interface Builder中的MainWindowmyBarButtonItem插座已连接到BarButtonItem,并已设置相应的@syntesizeproperty线。

@property (nonatomic, retain) IBOutlet UIBarButtonItem *myBarButtonItem; 

在myViewController.m,

@synthesize myBarButtonItem; 

任何人有一个想法,为什么上面setEnabled方法有没有影响?谢谢!

更新:修正了它!不知道为什么,但显然没有设定出路。我用我的App Delegate作为UIBarButtonItem的父对象,并且全部解决了。

+1

你有没有实际的调试验证了'myBarButtonItem'不是'无'? – 2010-09-24 04:02:42

+0

你是如何在@interface中声明后台的? – toxaq 2010-09-24 04:06:10

+0

为什么你有@synthesize myBarButtonItem;在你的头文件'myViewController.h'中。这不应该在你的实施?我认为一旦你提出它应该修复它。我是iOS开发新手,但每当我在头文件中有一个属性时,相应的合成器就在我的.m(实现)文件中。 – 2013-01-07 02:56:48

回答

66

可以从这样的一个的UIViewController内禁用左侧的导航按钮,而无需使用任何IBOutlet中:

self.navigationItem.leftBarButtonItem.enabled = NO; 

要禁用右侧导航按钮:

self.navigationItem.rightBarButtonItem.enabled = NO; 

Swift3

self.navigationItem.rightBarButtonItem?.isEnabled = false 
+1

这应该是现在正确的答案。 – jd291 2012-09-07 11:39:50

12

如果您的工具栏上有一个IBOutlet(和你检查,以确保它的非空),尝试:

[ [ [ myToolBar items ] objectAtIndex: myBarButtonItemIndex ] setEnabled:(NO) ]; 
1

在我的情况(SWIFT)我有2个barButtonItems添加为一个数组 - 所以禁用它们这样做有问题

navigationItem.rightBarButtonItems?.first?.enabled = false 
    navigationItem.rightBarButtonItems?.last?.enabled = false 
相关问题