禁用导航栏按钮项
Posted
技术标签:
【中文标题】禁用导航栏按钮项【英文标题】:Disabling a Navigation Bar Button Item 【发布时间】:2013-06-25 14:37:45 【问题描述】:将右侧导航栏按钮设置为禁用时,它不会更改其颜色以向用户表明其禁用状态。
它保持“突出显示”,非灰色。
我在 Storyboard 中的按钮设置如下:
self.navigationController.navigationItem.rightBarButtonItem.enabled = NO;
我还需要做什么才能在视觉上更改按钮的状态?
谢谢!
【问题讨论】:
是自定义按钮吗?启用设置为 FALSE 应该使常规 UIBarButtonItem 变暗 @ChrisH,我已经更新了我的问题。 如果您以编程方式添加“完成”按钮会发生什么? 我不能,因为我根据 Storyboard 中的按钮硬编码了一个 segue。 【参考方案1】:感谢 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
发布此答案是为了完整性,因此未来的用户无需继续搜索此页面。
【讨论】:
【参考方案2】:没有一个相关的答案能够产生我正在寻找的结果 - 但我能够通过在我的导航按钮上设置文本属性来解决这个问题:
[navButton setTitleTextAttributes:@NSForegroundColorAttributeName:enabledColor forState:UIControlStateNormal];
[navButton setTitleTextAttributes:@NSForegroundColorAttributeName:disabledColor forState:UIControlStateDisabled];
然后,我需要做的就是以下操作,用户交互性和颜色会自动更改:
navButton.enabled = YES; // or NO
【讨论】:
我喜欢在发布解决方案一个月后遇到这个问题,而我自己的解决方案回答了我的问题。【参考方案3】:试试这样的:
[[self.navigationItem.rightBarButtonItems objectAtIndex:0] setEnabled:NO];
【讨论】:
【参考方案4】:更新为:
self.navigationItem.leftBarButtonItem?.isEnabled = true
【讨论】:
【参考方案5】:您可以尝试像这样手动更改色调颜色:
self.navigationItem.rightBarButtonItem.tintColor = [UIColor grayColor];
这是未经测试的代码,但它应该可以工作。另外,再次启用时不要忘记将其更改回来。
【讨论】:
应该是[UIColor grayColor]
以上是关于禁用导航栏按钮项的主要内容,如果未能解决你的问题,请参考以下文章