ios 如何禁用 UIBarButtonItem?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3784112/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to disable UIBarButtonItem?
提问by Dan Loewenherz
I have a UIBarButtonItem that just doesn't want to get disabled. Short version: when I call
我有一个不想被禁用的 UIBarButtonItem。简短版本:当我打电话时
[myBarButtonItem setEnabled:NO];
Nothing happens.
没发生什么事。
myBarButtonItem
is an IBOutlet in myVIewController
. myViewController
has been added as an object to MainWindow
in Interface Builder. The myBarButtonItem
outlet has been connected to the BarButtonItem, and has the corresponding @syntesize
and property
lines set.
myBarButtonItem
是 中的 IBOutlet myVIewController
。myViewController
已作为对象添加到MainWindow
Interface Builder 中。该myBarButtonItem
出口被连接到所述BarButtonItem,并具有相应的@syntesize
和property
线集。
@property (nonatomic, retain) IBOutlet UIBarButtonItem *myBarButtonItem;
In myViewController.m,
在 myViewController.m 中,
@synthesize myBarButtonItem;
Anyone have an idea why the above setEnabled
method has no affect? Thanks!
任何人都知道为什么上述setEnabled
方法没有影响?谢谢!
UPDATE: Fixed it! Don't know why, but apparently the outlet wasn't being set. I used my App Delegate as the parent object for the UIBarButtonItem, and all worked out.
更新:修复它!不知道为什么,但显然没有设置出口。我使用我的 App Delegate 作为 UIBarButtonItem 的父对象,一切都解决了。
回答by Nicu Surdu
You can disable the left navigation button from inside an UIViewController like this, without using any IBOutlet:
您可以像这样从 UIViewController 内部禁用左侧导航按钮,而无需使用任何 IBOutlet:
self.navigationItem.leftBarButtonItem.enabled = NO;
To disable the right navigation button:
要禁用右侧导航按钮:
self.navigationItem.rightBarButtonItem.enabled = NO;
Swift3
斯威夫特3
self.navigationItem.rightBarButtonItem?.isEnabled = false
回答by hotpaw2
If your toolbar has an IBOutlet (and you've checked to make sure it's non-nil), try:
如果您的工具栏有一个 IBOutlet(并且您已检查以确保它非零),请尝试:
[ [ [ myToolBar items ] objectAtIndex: myBarButtonItemIndex ] setEnabled:(NO) ];
回答by DavidCollinsNZ
I used a different solution (Swift 4.2) for my rightBarButtonItems.
我为我的 rightBarButtonItems 使用了不同的解决方案(Swift 4.2)。
I had 3 buttons so used a for loop, then made an extension of UINavigationItem so I could use it throughout my app.
我有 3 个按钮,因此使用了 for 循环,然后对 UINavigationItem 进行了扩展,以便我可以在整个应用程序中使用它。
extension UINavigationItem {
func setRightBarButtonItems(isEnabled:Bool){
for button in self.rightBarButtonItems ?? [UIBarButtonItem()] {
button.isEnabled = isEnabled
}
}
Then i can call it from my TableViewController
然后我可以从我的 TableViewController 调用它
navigationItem.setRightBarButtonItems(isEnabled: false)
回答by ioopl
In my case (Swift) I had 2 barButtonItems added as an array - so to disable them this did the trick
就我而言(Swift),我将 2 个 barButtonItems 添加为一个数组 - 因此禁用它们就可以了
navigationItem.rightBarButtonItems?.first?.enabled = false
navigationItem.rightBarButtonItems?.last?.enabled = false