10

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

它仍然“突出显示”,非灰色。

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

在此处输入图像描述

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

我还需要做什么才能在视觉上更改按钮的状态?

谢谢!

4

5 回答 5

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;

因为苹果不喜欢禁用后退按钮。

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

问题的链接在这里

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

于 2015-01-21T04:13:08.737 回答
5

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

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

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

navButton.enabled = YES; // or NO
于 2015-08-19T21:28:51.900 回答
1

尝试这样的事情:

[[self.navigationItem.rightBarButtonItems objectAtIndex:0] setEnabled:NO];
于 2015-01-21T09:28:52.233 回答
1

将其更新为:

self.navigationItem.leftBarButtonItem?.isEnabled = true
于 2017-07-31T23:17:48.233 回答
0

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

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

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

于 2013-06-25T15:04:40.050 回答