【发布时间】:2021-07-16 07:50:07
【问题描述】:
我正在创建一个有5个按钮的测试,每个按钮对应一种特定的颜色,问题是当我选择连续的第二个按钮时,前一个按钮仍然被选中,我怎样才能让我的代码只选择一个一次按钮并取消选择上一个按钮?
我该如何解决这个问题?
这是我的代码
class ViewController: UIViewController {
var buttonPressed: Bool = false
@IBOutlet weak var button1: UIButton!
@IBAction func buttonAction1(_ sender: UIButton) {
if buttonPressed {
buttonPressed = false
button1.setImage(UIImage(named: "Bolinha-5"), for: .normal)
}
else {
buttonPressed = true
button1.setImage(UIImage(named: "Bolinha-4"), for: .normal)
}
}
@IBOutlet weak var button2: UIButton!
@IBAction func buttonAction2(_ sender: UIButton) {
if buttonPressed {
buttonPressed = false
button2.setImage(UIImage(named: "Bolinha-5"), for: .normal)
}
else {
buttonPressed = true
button2.setImage(UIImage(named: "Bolinha-4"), for: .normal)
}
}
@IBOutlet weak var button3: UIButton!
@IBAction func buttonAction3(_ sender: UIButton) {
if buttonPressed {
buttonPressed = false
button3.setImage(UIImage(named: "Bolinha-2"), for: .normal)
}
else {
buttonPressed = true
button3.setImage(UIImage(named: "Bolinha-4"), for: .normal)
}
}
@IBOutlet weak var button4: UIButton!
@IBAction func buttonAction4(_ sender: UIButton) {
if buttonPressed {
buttonPressed = false
button4.setImage(UIImage(named: "Bolinha-3"), for: .normal)
}
else {
buttonPressed = true
button4.setImage(UIImage(named: "Bolinha-4"), for: .normal)
}
}
@IBOutlet weak var button5: UIButton!
@IBAction func buttonAction5(_ sender: UIButton) {
if buttonPressed {
buttonPressed = false
button5.setImage(UIImage(named: "Bolinha-3"), for: .normal)
}
else {
buttonPressed = true
button5.setImage(UIImage(named: "Bolinha-4"), for: .normal)
}
}
}
【问题讨论】:
-
看起来像简单的错别字:你在
button1.setImageinbuttonAction5etc. -
谢谢!我没注意到
-
是的,我确实注意到了。但是您实际上并没有在您的
IBAction方法中引用这些网点。比如buttonAction5,你还是说button1.setImage,所以它设置了button1的形象。哦,我刚刚注意到,如果你想单独控制它们,你还需要 5 个不同的buttonPressed变量。您可能需要考虑使用数组来存储状态和按钮,并使用标签来标识按钮。 -
谢谢!它起作用了,我知道也许我不应该在 cmets 中问这个问题,但现在我的下一个问题是,当我单击第二个按钮时,例如,我单击 button1 然后单击 button2,两个按钮都被选中,怎么能我取消选择之前按下的按钮,所以屏幕上只能更改一个按钮? Ps:如果您认为这更适合 StackOverflow 我可以创建另一个问题
-
您可以为每个按钮设置一个标签值。当按下一个按钮时,您可以保存当前标签,然后在所有按钮上执行 for 循环,并取消选择那些与您之前保存的标签不同的标签。
标签: ios swift xcode button uistackview