首页 > 解决方案 > 为什么当我点击按钮时,按钮的文本颜色没有改变?

问题描述

每次用户选择一个按钮以显示选择了哪个按钮时,我都想将我的 UIButtons 的文本颜色更改为 .orange。如果选择了另一个按钮,它会将颜色更改回 .white。我尝试使用下面的代码对按钮进行子类化,但没有任何变化。使用情节提要并在检查器中更改颜色属性也不起作用。我错过了什么?

class HighlightedButton: UIButton {

override var isHighlighted: Bool {
    didSet {
        backgroundColor = isHighlighted ? .orange : UIColor(red: 44/255, green: 62/255, blue: 80/255, alpha: 1.0)
    }
}

override var isSelected: Bool {
    didSet {
        titleLabel?.textColor = isSelected ? .orange : .white
    }
}

标签: iosswiftuibutton

解决方案


您可以简单地Outlet Collection为.buttonsstackView

添加一个@IBAction并将所有连接buttons到它。在此方法中,设置selection. 并根据他们的选择tapped button改变textColor所有的buttons,即Outlet Collection

@IBOutlet var buttons: [UIButton]!

@IBAction func onTapButton(_ sender: UIButton) {
    buttons.forEach {
        $0.isSelected = ($0 == sender)
        $0.setTitleColor((sender.isSelected) ? .orange : .white, for: .normal)
    }
}

推荐阅读