如何一次为多个按钮或标签设置值?

时间:2018-08-10 20:00:14

标签: swift

例如可以一次将.isHidden设置为多个按钮,而不是:

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

类似button1, button2, button3.isHidden = true

4 个答案:

答案 0 :(得分:7)

除了@ukim的答案外,您还可以使用 Outlet Collection

在情节提要中,从第一个按钮拖动鼠标,然后选择 Outlet Collection (而不是像通常那样选择 Outlet )。

enter image description here

哪个给你…

apply(data.frame(lapply(templist, function(x) apply(x[,3:5], 2, mean))),1,mean)
Estimate ci.lower ci.upper 
   4.331    1.271    7.392 

然后将所有其他按钮连接到相同的 TEXT = data.Field(sequential=True,tokenize=tokenize, lower=True, include_lengths=True) LABEL = data.Field(sequential=True,tokenize=tokenize, lower=True) train = data.TabularDataset(path='./data.csv', format='csv', fields=[("label",LABEL), ("statement",TEXT)], skip_header=True) test = data.TabularDataset(path='./test.csv', format='csv', fields=[("label",LABEL), ("statement",TEXT)], skip_header=True)

然后您可以说

@IBOutlet var buttons: [UIButton]!

答案 1 :(得分:6)

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

[button1, button2, button3].forEach {
    $0.isHidden = true
}

答案 2 :(得分:4)

您还可以创建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 

在这种情况下,扩展集合更有意义,因为可以将Hide / show与ArraySlices一起使用,从而提供更大的灵活性。

这是您的操作方式,

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()

答案 3 :(得分:3)

您还可以创建IBOutlet集合

@IBOutlet var multiButtons: [UIButton]!

执行以下操作:当您从按钮中拖动并拖动到代码中时,选择“出口集合”;然后控制将其他按钮拖动到此插座集合。

现在,您可以

for button in multiButtons {
  button.isHidden = true 
}