为什么在我点击按钮时,它们的文字颜色没有改变?

时间:2019-07-01 11:41:35

标签: ios swift uibutton

我想每次用户选择一个按钮以显示选择了哪个按钮时,将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
    }
}

1 个答案:

答案 0 :(得分:2)

您可以简单地为Outlet Collection中的所有buttons创建一个stackView

添加一个@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)
    }
}