代码之家  ›  专栏  ›  技术社区  ›  Anvil

如何同时设置多个按钮或标签的值?

  •  9
  • Anvil  · 技术社区  · 6 年前

    例如,是否可以设置, .isHidden

    button1.isHidden = true    
    button2.isHidden = true    
    button3.isHidden = true     
    

    类似于: button1, button2, button3.isHidden = true .

    4 回复  |  直到 6 年前
        1
  •  6
  •   ukim    6 年前

    将它们放入一个数组中并遍历该数组。

    [button1, button2, button3].forEach {
        $0.isHidden = true
    }
    
        2
  •  7
  •   Ashley Mills    6 年前

    出口集合 .

    出口集合 而不是 就像你平时一样。

    enter image description here

    这给了你

    @IBOutlet var buttons: [UIButton]!
    

    然后把其他的按钮都连接到同一个 @IBOutlet

    buttons.forEach {
        $0.isHidden = true
    }
    
        3
  •  4
  •   Sandeep    6 年前

    您还可以创建 Array 分机。将元素类型约束为 UIButton ,这样就不能为任何其他类型的数组调用它。

    像这样的东西,

    extension Array where Element == UIView {
    
        func show() {
            forEach { $0.isHidden = false }
        }
    
        func hide() {
            forEach { $0.isHidden = true }
        }
    }
    

    然后,像这样使用它,

    [button1, button2, button3].hide() // hide buttons
    [button1, button2, button3].show() // show 
    

    这就是你要做的,

    extension Collection where Element: UIView {
        func show() {
            forEach { $0.isHidden = false }
        }
    
        func hide() {
            forEach { $0.isHidden = true }
        }
    
        func toggleVisibility() {
            forEach { $0.isHidden = !$0.isHidden }
        }
    }
    

    有了这个你可以做一些很酷的事情比如,

    // hide all but not first
    myArrayOfButtons.dropFirst().hide()
    
    // hide buttons in indexes 0 to 1
    myArrayOfButtons[0 ... 1].hide()
    
    // show all buttons but not last
    myArrayOfButtons.dropLast().show()
    
    // hide first 2 buttons
    myArrayOfButtons.prefix(2).hide()
    
    // show last button
    myArrayOfButtons.suffix(1).show()
    
    // toggle visibility of first 2 
    myArrayOfButtons.prefix(2).toggleVisibility()
    
        4
  •  3
  •   claude31    6 年前

    @IBOutlet var multiButtons: [UIButton]!
    

    执行此操作:当您控制从按钮拖动到代码时,选择Outlet collection;然后控制将其他按钮拖动到此Outlet collection。

    现在,你可以

    for button in multiButtons {
      button.isHidden = true 
    }