禁用导航栏按钮项

时间:2013-06-25 14:37:45

标签: ios objective-c uinavigationcontroller uikit uibarbuttonitem

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

它仍然是#34;突出显示",非灰显。

我在Storyboard中设置了按钮,如下所示:

enter image description here

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

我还需要做些什么来直观地改变按钮的状态?

谢谢!

5 个答案:

答案 0 :(得分:5)

此答案归功于 Vijay-Apple-Dev.blogspo

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

这会自动使按钮变灰并禁用它们。

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

再次感谢Vijay注意到使用它可能更好:

self.navigationItem.hidesBackButton = YES;

由于Apple并不想禁用后退按钮。

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

问题的链接是here

此答案是为了完整性而发布的,因此未来的用户无需继续搜索此页面。

答案 1 :(得分:5)

没有相关的答案能够产生我想要的结果 - 但我能够通过在导航按钮上设置文本属性来解决这个问题:

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

然后,我需要做的就是以下内容以及用户的交互性和颜色自动更改:

navButton.enabled = YES; // or NO

答案 2 :(得分:1)

尝试这样的事情:

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

答案 3 :(得分:0)

您可以尝试手动更改色调颜色,如下所示:

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

这是未经测试的代码,但应该可以使用。此外,不要忘记在再次启用时将其更改回来。

答案 4 :(得分:0)

将其更新为:

self.navigationItem.leftBarButtonItem?.isEnabled = true