点击3次时如何更改导航按钮的图像?

时间:2015-08-31 13:14:55

标签: swift uibutton uicollectionview uinavigationbar

当用户点击它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种状态。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为有两种简单的方法可以做到这一点:

  1. 你可以在你的类中设置一个变量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
      }
    }
    
  2. 你可以做的几乎相同,但不是使用变量,你可以使用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
    }
    }