禁用导航栏按钮项目

问题描述:

将右侧导航栏按钮设置为禁用时,它不会更改其颜色以向用户发出禁用状态的信号。禁用导航栏按钮项目

它仍然“突出显示”,不变灰。

我在故事板设置按钮,如下所示:

enter image description here

self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; 

什么我需要做的改变button`s状态可视化呢?

谢谢!

+1

是一个自定义按钮?启用设置为FALSE应该暗淡一个普通的UIBarButtonItem – ChrisH

+0

@ChrisH,我已经更新了我的问题。 – AlexR

+0

如果您以编程方式添加完成按钮,会发生什么情况? – ChrisH

您可以尝试手动更改色调颜色是这样的:

self.navigationItem.rightBarButtonItem.tintColor = [UIColor grayColor]; 

这是未经测试的代码,但它应该工作。另外,不要忘记在再次启用时将其改回。这个答案。

+0

应该是'[UIColor grayColor]' –

感谢Vijay-Apple-Dev.blogspo为此答案。

self.navigationItem.leftBarButtonItem.enabled = NO; 
self.navigationItem.rightBarButtonItem.enabled = NO; 

这自动显示灰色的按钮,也禁用它们。

注意:在问题中的假设self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; 作品似乎是错误的,在我的代码中试用后,我发现它没有任何效果。

再次感谢维杰指出,这可能是更好的使用:

self.navigationItem.hidesBackButton = YES; 

由于苹果不喜欢禁用后退按钮。

就我个人而言,我将禁用右上角的按钮并隐藏后退按钮以阻止用户按下它们,然后在我选择时再次启用它们。

的链接问题是here

这个答案张贴的完整性,因此未来用户不需要继续搜索过去的这个网页。

尝试这样:

[[self.navigationItem.rightBarButtonItems objectAtIndex:0] setEnabled:NO]; 

相关答案都不能够产生我一直在寻找的结果 - 但我能够通过设置文本属性上我的导航按钮来解决这个问题:

[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:enabledColor} forState:UIControlStateNormal]; 
[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:disabledColor} forState:UIControlStateDisabled]; 

然后,我需要做的是以下内容,用户interactability和自动色彩的变化:

navButton.enabled = YES; // or NO 
+0

我喜欢这个,我在发布解决方案一个月后遇到了这个问题,我自己的解决方案回答了我的问题。 – Mike

更新到:

self.navigationItem.leftBarButtonItem?.isEnabled = true