UIButton集合为最后按下的按钮设置了颜色

时间:2019-03-17 19:30:49

标签: swift collections background uibutton

我有一系列按钮,它们的作用类似于选择器菜单。我希望当我按下其中一个按钮时,它会更改其backgroundColor,而所有其他按钮都恢复为其初始颜色。

这是我目前拥有的

 @IBAction func optionSelected(_ sender: UIButton) {

    for button in selectButtons {
        if button.tag == sender.tag {

        if !button.isSelected {
            button.backgroundColor = palette.importantColorObject()
            button.isSelected = true
        } else {
            button.backgroundColor = palette.clearGrayColorObject()
            button.isSelected = false
        }

        }
    }

但是我不知道如何使只有最后选择的按钮具有此importantColorObject,而且我还遇到这样的问题:选择按钮时,不仅背景颜色会改变,而且看起来也就像选择内部文本(蓝色)一样。我该如何解决?

预先感谢

1 个答案:

答案 0 :(得分:0)

这将解决您唯一的一个选择问题,这将确保您始终具有选定的按钮,除非您取消选择选定的按钮,并且所有按钮都变为灰色或未选定状态。

@IBAction func optionSelected(_ sender: UIButton) {

    selectButtons.forEach { (button) in
        button.backgroundColor = palette.clearGrayColorObject()
        button.isSelected = false
    }

    sender.backgroundColor = palette.importantColorObject()
    sender.isSelected = true
}

如果您也想使用该功能

@IBAction func optionSelected(_ sender: UIButton) {
   if sender.isSelected {
       sender.backgroundColor = palette.clearGrayColorObject()
       sender.isSelected = false
   } else {
       selectButtons.forEach { (button) in
           button.backgroundColor = palette.clearGrayColorObject()
           button.isSelected = false
       }

       sender.backgroundColor = palette.importantColorObject()
       sender.isSelected = true
   }
}

希望这会有所帮助。