当用户点击它3次时,我需要在我的NAV栏中更改UIButton的图像。每个点击显示不同的UIImage及其对应的集合视图。我让动画集合视图完美运行,但是......
如何在Swift中更改按钮图像?
我尝试了多种方法,似乎无法让它发挥作用,例如:
@IBAction func buttonTapped(sender: UIButton) {
if let myButton = UIImage(named:"btn1") {
sender.setImage(myButton, forState: .Normal)
}
if let myButton = UIImage(named:"btn2") {
sender.setImage(myButton, forState: .Normal)
}
if let myButton = UIImage(named:"btn3") {
sender.setImage(myButton, forState: .Normal)
}
}
有很多帖子涉及更改两种状态的uibutton,例如秒表或播放/暂停,但我需要导航栏中有3种状态。
谢谢!
答案 0 :(得分:0)
我认为有两种简单的方法可以做到这一点:
你可以在你的类中设置一个变量Int,直到它为2,然后将它再次设置为0,如下所示:
var buttonCounter: Int = 0
@IBAction func buttonTapped(sender: UIButton) {
if buttonCounter == 0{
let myButton = UIImage(named:"btn1")
sender.setImage(myButton, forState: .Normal)
buttonCounter++
}
else if buttonCounter == 1 {
let myButton = UIImage(named:"btn2")
sender.setImage(myButton, forState: .Normal)
buttonCounter++
}
else {
let myButton = UIImage(named:"btn3")
sender.setImage(myButton, forState: .Normal)
buttonCounter = 0
}
}
你可以做的几乎相同,但不是使用变量,你可以使用UIButton的.tag属性。标签是一个整数,通常用于找出调用IBAction的按钮,但只有一个按钮调用该函数,因此您可以像这样使用它:
@IBAction func buttonTapped(sender: UIButton) {
if sender.tag == 0{
let myButton = UIImage(named:"btn1")
sender.setImage(myButton, forState: .Normal)
sender.tag++
}
else if sender.tag == 1 {
let myButton = UIImage(named:"btn2")
sender.setImage(myButton, forState: .Normal)
sender.tag++
}
else {
let myButton = UIImage(named:"btn3")
sender.setImage(myButton, forState: .Normal)
sender.tag = 0
}
}