首页 > 解决方案 > 选择 SWIFT 时更改按钮背景颜色

问题描述

我有 3 个按钮。选择一个时,我希望背景为白色。我可以处理这部分。我的问题是,当我选择一个未选择的按钮时,我希望我选择的按钮的颜色恢复为旧颜色。我怎样才能做到这一点?

@IBOutlet weak var xButton: UIButton!

@IBOutlet weak var yButton: UIButton!

@IBOutlet weak var zButton: UIButton!

var button_isActive: Bool = false

    @IBAction func btn_Button(_ sender: UIButton) {
    if button_isActive {
        UIView.animate(withDuration: 0.2) {
            sender.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
            
        }
    } else {
        UIView.animate(withDuration: 0.2) {
            sender.backgroundColor = #colorLiteral(red: 0.1098039216, green: 0.1098039216, blue: 0.1098039216, alpha: 1)
        }
    }
    button_isActive = !button_isActive
}

在此处输入图像描述

当我单击 X 按钮时,背景颜色会发生变化。当我单击 Y 按钮时,背景颜色会发生变化,但 x 按钮的背景颜色保持不变。我希望它恢复到旧的背景颜色

在此处输入图像描述

标签: iosswiftuikit

解决方案


您可以将插座存储在数组中。为此,请观看以下视频:https
://www.youtube.com/watch?v=bFfPT37Yh8c 之后,您必须为所有按钮创建一个操作(此处称为buttonPressToggle)。

@IBAction func buttonPressToggle(_ sender: UIButton) {
    //buttons -> your outlet collection
    for btn in buttons {
        if btn == sender {
            btn.backgroundColor = .white
        } else {
            btn.backgroundColor = .gray
        }
    }
}

甚至更短:

@IBAction func buttonPressToggle(_ sender: UIButton) {
    self.buttons.forEach { $0.backgroundColor = ($0 == sender) ? UIColor.white : UIColor.gray }
}

推荐阅读