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

How to change the image of a navigation button when tapped 3 times?

我需要在用户点击 3 次时更改导航栏中 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 的两种状态有关,例如秒表或 play/pause,但我需要导航栏中的 3 种状态。

谢谢!

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

  1. 您可以在 class 中设置一个 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
    }
    }