【发布时间】:2018-08-17 10:41:23
【问题描述】:
我有三个名为 One, Two, 和 Three, 的按钮和一个函数 buttonPressed 用于收集这三个按钮,如下所示。
var btnTag = [Int]()
@IBAction func buttonPressed(_ sender: UIButton) {
guard let button = sender as UIButton? else { return }
if(btnTag.contains((sender as AnyObject).tag!))
{
if let index = btnTag.index(of: (sender as AnyObject).tag!)
{
btnTag.remove(at: index)
}
}
else
{
btnTag.append((sender as AnyObject).tag!)
}
if !button.isSelected {
button.isSelected = true
button.setTitleColor(.red, for: .normal)
}
else
{
button.isSelected = false
button.setTitleColor(.white, for: .normal)
}
}
我喜欢在单击时将按钮的颜色更改为red,然后在单击其他按钮时将上一个按钮的颜色更改为white。因此,如果我按One,,我希望One 成为red,然后当我按Two 时,我希望Two 成为red 和One 作为white。我做了上述但它允许multiple selection 并且不能deselect 以前的更改。我该如何解决?
【问题讨论】:
-
您需要在选择任何其他按钮之前取消选择所有按钮
-
所以,在这种情况下,我必须为每个按钮创建单独的插座。有没有办法,我可以在不为每个按钮创建单独的插座的情况下做到这一点?
-
你可以看到我的答案,或者有一个叫做
IBOutletCollection的东西,它会让你的代码看起来更干净,所有按钮只有一个插座