ios - 选择 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 按钮的背景颜色保持不变。我希望它恢复到旧的背景颜色
解决方案
您可以将插座存储在数组中。为此,请观看以下视频: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 }
}
推荐阅读
- android - 小部件 onUpdate 调用一次
- javascript - JavaScript - 声明全局变量
- windows - 终端中的不可见文本与纱线
- javascript - 从 javascript 中已有的数组中创建新数组
- jquery - Angular - 如何在 angular component.ts 中定义 owl carousel 回调函数?
- c++ - 模板元编程 - g++ 吃掉它,clang 不吃
- reactjs - 为什么我在安装 REACT 时收到此错误?
- php - 警告:session_destroy():试图在第 27 行销毁 D:\xampp\htdocs\PHP\MyBlog\lib\Session.php 中的未初始化会话
- reactjs - 使用酶检查反应“选择”的选定值
- java - 运行时环境与编译器 Java 问题不同?