以编程方式在UIToolbar中显示或隐藏UIBarButtonItem

时间:2016-04-01 13:21:16

标签: ios swift

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

4 个答案:

答案 0 :(得分:3)

这个答案的灵感来自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

答案 1 :(得分:1)

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

nextBarButton.enabled = NO;

图标也会自动显示为灰色。

答案 2 :(得分:0)

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

toolBar.setItems([], animated: true)

如果要删除特定项目,可以使用索引。

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

答案 3 :(得分:0)

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

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