ios - 为什么当我点击按钮时,按钮的文本颜色没有改变?
问题描述
每次用户选择一个按钮以显示选择了哪个按钮时,我都想将我的 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
}
}
解决方案
您可以简单地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)
}
}
推荐阅读
- c# - 如何构建 Nest SearchRequest 对象并在查询中查看原始 JSON?
- c# - 在 Unity 中使用 Json.NET 序列化和反序列化具有任意字段的对象
- mysql - 如何在 OSX Mojave 上安装 MySQL 5.6?
- tabulator - 如何将数据树下载到 CSV?
- django - CreateView中的Django多个模型
- variables - Excel vba - 命令取决于先前的命令
- html - 如何使我的可点击垂直下拉菜单仅使用 css 正常工作?
- c - 在C中存储来自字符串的输入十六进制值
- cucumber - 我可以在我的 Cucumber Steps 中处理 int 和 float 吗?
- c# - 如何通过 LINQ 将同一类的对象属性合并在一起