【问题标题】:UIButton collection set color for last pressed buttonUIButton 集合设置上次按下按钮的颜色
【发布时间】:2019-08-08 05:06:33
【问题描述】:

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

这是我目前拥有的

 @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,而且我还遇到一个问题,当我选择按钮时,不仅它的背景颜色发生变化,而且看起来也像如果选择了里面的文本(蓝色)。我该如何解决这个问题?

提前致谢

【问题讨论】:

  • here 有很多答案可以帮助您入门。

标签: swift collections background uibutton


【解决方案1】:

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

@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
   }
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多