Ios 在视图更改之前,不会禁用UIBarButtonim

Ios 在视图更改之前,不会禁用UIBarButtonim,ios,uibarbuttonitem,uitoolbar,Ios,Uibarbuttonitem,Uitoolbar,我有一个UINavigationController,正在使用其中一个视图控制器中的工具栏。我有好几个维吾尔人。在不同点上,我禁用工具栏中的某些按钮,使用类似于\u btnEdit.enabled=NO的方法 这一切都很好,除了有一次在没有用户交互的情况下发生。在这种情况下,按钮显示为已启用(未灰显),但不接受触摸。如果我用某种东西(底部的一张动作表)覆盖该条,或者更改设备的方向,它会正确显示 我已经尝试了self.navigationController.toolbar setNeedsDis

我有一个UINavigationController,正在使用其中一个视图控制器中的工具栏。我有好几个维吾尔人。在不同点上,我禁用工具栏中的某些按钮,使用类似于
\u btnEdit.enabled=NO
的方法

这一切都很好,除了有一次在没有用户交互的情况下发生。在这种情况下,按钮显示为已启用(未灰显),但不接受触摸。如果我用某种东西(底部的一张动作表)覆盖该条,或者更改设备的方向,它会正确显示

我已经尝试了
self.navigationController.toolbar setNeedsDisplay]
[self.navigationController.toolbar drawRect:self.navigationController.toolbar.bounds]
但都没有任何效果


关于如何“刷新”这个视图有什么想法吗?我知道UIBarButtonItems不是从UIView继承的,我觉得这可能是问题的原因。

这是预期的行为。setNeedsDisplay是一个很好的尝试,但是您没有导航栏,而且
uiBarButtonim没有继承自UIView
,因此我们需要对它们有一点不同的想法。
以下是您如何实现目标的方法:

UIBarButtonItem *bbi = self.navigationItem.rightBarButtonItem;
bbi.enabled = NO;
[self.navigationItem setRightBarButtonItem:bbi animated:YES];
注意:
self
是一个
UIViewController


我刚刚用这个做了一个快速测试,它正在工作。

设置时,检查它是否为零。它不是零。当方向改变时,按钮被禁用进一步说明了这一点。请您添加一些代码,解释如何禁用按钮以及在何种情况下按钮无法正常工作。这可能会起作用,但按钮位于工具栏中,而不是右栏按钮项中。不过,我让它工作的方式是相似的。更改启用状态后,我只调用:
[self.navigationController setToolbarHidden:YES动画:NO];[self.navigationController设置工具栏隐藏:无动画:无],这迫使工具栏重新绘制。@Ned UIToolBar您是否尝试过以相同的方式设置项目:动画