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