【问题标题】:Hide UIBarButtonItem only while a task is performing仅在执行任务时隐藏 UIBarButtonItem
【发布时间】:2013-01-28 19:10:12
【问题描述】:

我有一个带有刷新 rightBarButtonItem 的导航栏,我想在刷新时隐藏它。

我尝试将其设置为 nil,然后在任务完成后将其设置回刷新按钮,但任务可能太快所以不显示。

还有什么办法可以隐藏吗?

我想给用户一个反馈,即刷新按钮在我正在使用的 MBProgressHUD 之外被点击。

【问题讨论】:

  • 任务是否可能需要时间,或者您只是希望按钮具有快速闪烁效果?
  • 我希望任务尽可能快(它正在解析来自网站的数据)。一个快速的闪光效果就可以了。
  • 此处选择的解决方案可能会有所帮助,但很可能需要进行一些修改:stackoverflow.com/questions/6893181/…
  • 问题是 UIBarButtonItem 没有 setAlpha 属性。

标签: objective-c uibarbuttonitem


【解决方案1】:

您想要做的不是删除它,而是禁用它,这会使它“变灰”。

使用此代码:

rightBarButtonItem.enabled = NO;[rightBarButtonItem setEnabled: NO]; 取决于您的语法选择。

您首先需要对 rightBarButtonItem 有一个引用,这可以通过使用 IBOutlet 来实现。

【讨论】:

  • 我尝试在我的头文件中为 UIBarButtonItem 添加 IBOutlet,然后在刷新按钮调用的方法中,我将其设置为启用 = NO,当任务完成后我将其设置回是的,仍然没有反馈。有什么想法吗?谢谢!
  • 你的任务是运行在主线程还是后台线程?如果它是主线程,您可能会阻塞 UI。当 UI 能够更新时,您已经将 enable 重置为 YES。
  • 它在主线程上,我阻塞了 UI。有什么办法吗? (我希望 UI 在任务运行时保持阻塞)
  • 确保在开始阻塞线程之前设置 UIBarButtonItem。如果不能解决,请将有问题的代码上传到 Github 的 gist 中。
猜你喜欢
  • 2012-01-23
  • 2011-12-12
  • 2011-01-09
  • 2013-01-11
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多