iOS UIButtons - 选择 1 时切换背景,其他则不
iOS UIButtons - Toggle backgrounds when 1 is selected, others are not
我有多个按钮,代表数据输入(分数)。选择 1 个按钮后,将其背景更改为 1 种颜色。所有其他按钮应设置为不同的颜色,以显示当前选择的颜色(切换)。
我已使用此 thread 中的信息来实现 @IBAction 函数来更改按钮。我使用 Swift v4 回复/解决方案作为基础,本质上是一个单一的功能:
@IBAction func buttonPressToggle(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
if sender.isSelected {
sender.backgroundColor = UIColor.orange
} else {
sender.backgroundColor = UIColor.green
}
}
所有按钮都使用相同的功能,因此我可以通过 sender
局部变量来定位按钮。我也可以使用 tag
属性,但目前我还没有对此做任何事情。
缺少的是“重置”任何其他按钮的状态/背景颜色,因为它不再被选中。
您可以执行以下操作:
class ViewController: UIViewController {
@IBOutlet var collectionOfButtons: Array<UIButton>?
private let selectionColor = UIColor.orange
private let nonSelectedColor = UIColor.green
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func buttonPressToggle(_ sender: UIButton) {
guard let buttons = collectionOfButtons else { return }
for btn in buttons {
if btn.tag == sender.tag {
btn.backgroundColor = selectionColor
} else {
btn.backgroundColor = nonSelectedColor
}
}
}
所以基本上我们将每个按钮的插座存储在一个数组中,如果一个按钮被选中,我们遍历这个数组并检查当前按钮 (btn
) 是否被选中,如果是,我们将其 backgroundColor
设置为另一个。
所以对于这种方法,按钮应该被标记。
我已经上传了示例项目:https://github.com/finebel/ToggleButtons
@IBAction func buttonPressToggle(_ sender: UIButton) {
self.buttons.forEach {
[=10=].backgroundColor = ([=10=] == sender) ? UIColor.orange : UIColor.green
}
}
我有多个按钮,代表数据输入(分数)。选择 1 个按钮后,将其背景更改为 1 种颜色。所有其他按钮应设置为不同的颜色,以显示当前选择的颜色(切换)。
我已使用此 thread 中的信息来实现 @IBAction 函数来更改按钮。我使用 Swift v4 回复/解决方案作为基础,本质上是一个单一的功能:
@IBAction func buttonPressToggle(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
if sender.isSelected {
sender.backgroundColor = UIColor.orange
} else {
sender.backgroundColor = UIColor.green
}
}
所有按钮都使用相同的功能,因此我可以通过 sender
局部变量来定位按钮。我也可以使用 tag
属性,但目前我还没有对此做任何事情。
缺少的是“重置”任何其他按钮的状态/背景颜色,因为它不再被选中。
您可以执行以下操作:
class ViewController: UIViewController {
@IBOutlet var collectionOfButtons: Array<UIButton>?
private let selectionColor = UIColor.orange
private let nonSelectedColor = UIColor.green
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func buttonPressToggle(_ sender: UIButton) {
guard let buttons = collectionOfButtons else { return }
for btn in buttons {
if btn.tag == sender.tag {
btn.backgroundColor = selectionColor
} else {
btn.backgroundColor = nonSelectedColor
}
}
}
所以基本上我们将每个按钮的插座存储在一个数组中,如果一个按钮被选中,我们遍历这个数组并检查当前按钮 (btn
) 是否被选中,如果是,我们将其 backgroundColor
设置为另一个。
所以对于这种方法,按钮应该被标记。
我已经上传了示例项目:https://github.com/finebel/ToggleButtons
@IBAction func buttonPressToggle(_ sender: UIButton) {
self.buttons.forEach {
[=10=].backgroundColor = ([=10=] == sender) ? UIColor.orange : UIColor.green
}
}