【问题标题】:Show or hide UIBarButtonItem in UIToolbar programmatically以编程方式在 UIToolbar 中显示或隐藏 UIBarButtonItem
【发布时间】:2016-07-21 07:53:06
【问题描述】:
var toolBar: UIToolbar!
let nextBarButton = UIBarButtonItem(title: "Next", style: .Plain, target: self, action: "nextButtonPressed")
self.toolBar.setItems([nextBarButton], animated: true)

如何在 ToolBar 中隐藏 nextButton? 我使用了以下代码,但它不起作用。

self.toolbar.items.indexOf(1).hidden = true

【问题讨论】:

标签: ios swift


【解决方案1】:

这个答案的灵感来自this answer.

我会改进它并以编程方式完成所有工作。不再需要更新/设置 UIBarButtonItem 实例的类来使用新的子类。

我们可以将isHidden 属性添加到UIBarButtonItem。然后随心所欲地使用它。

extension UIBarButtonItem {
   var isHidden: Bool = false {
      didSet {
          isEnabled = !isHidden
          tintColor = isHidden ? UIColor.clear : UIColor.black
      }
   }
}

在您的情况下,在您添加扩展名之后(在任何类之外)。您可以将其用作:

self.toolbar.items.indexOf(1).isHidden = true

【讨论】:

  • 如何解决这个错误:“扩展不能包含存储的属性”
【解决方案2】:

看起来它是一个“下一个”按钮,当没有任何东西可以移动到下一个时,标准的处理方法是像这样简单地禁用它:

nextBarButton.enabled = NO;

图标也会自动变灰。

【讨论】:

    【解决方案3】:

    UIBarButton 没有“隐藏”属性,因此您无法隐藏。你可以删除它。由于工具栏上只有一个按钮,因此可以清除工具栏上的所有项目。

    toolBar.setItems([], animated: true)
    

    如果你想删除一个特定的项目,你可以使用索引。

        var items = toolBar.items
        items?.removeAtIndex(0)
        toolBar.setItems(items, animated: true)
    

    【讨论】:

      【解决方案4】:

      您可以添加简单的功能,用于隐藏状态

      extension UIBarButtonItem {
          func set(hide: Bool) {
              isEnabled = !hide
              tintColor = hide ? .clear : .white
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 2018-12-29
        • 2012-06-05
        相关资源
        最近更新 更多