How to change UIButton image after clicking in Swift?

14,762

Solution 1

Try this code

let image = UIImage(named: "duellogo.png") as UIImage!
self.playRoundButton.setImage(image, forState: .Normal)

Solution 2

Swift 3:

self.addButton.setImage(UIImage(named: "pending"), for: .normal)
Share:
14,762
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm new to coding development so this should be a pretty noob question. But I'm trying to change the image of my UIButton to an image stored in image.casset "duellogo" if my if statement executes. But I am unsure how to change UIButton Image; I only know how to change UIImageView Image.

    import UIKit
    
    class ViewController: UIViewController 
    {
    
        @IBOutlet weak var firstCardImageView: UIImageView!
        @IBOutlet weak var secondCardImageView: UIImageView!
        @IBOutlet weak var playRoundButton: UIButton!
        @IBOutlet weak var backgroundImageView: UIImageView!
    
        @IBOutlet weak var Player1Score: UILabel!
        @IBOutlet weak var Player2Score: UILabel!
    
        //declaring index score, 0, to player 1 and player 2
        var player1Total=0
        var player2Total=0
    
        var cardNamesArray:[String] = ["ace", "card2", "card3", "card4", "card5", "card6", "card7", "card8", "card9", "card10", "jack", "queen", "king"]
    
        override func viewDidLoad() 
        {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() 
        {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        @IBAction func playRoundTapped(sender: UIButton) 
        {
            // create variable to make a random number from 1-13
            var firstRandomNumber:Int = Int(arc4random_uniform(13))
            var firstCardString:String = self.cardNamesArray[firstRandomNumber]
            self.firstCardImageView.image = UIImage(named: firstCardString)
    
            // create variable to make a random number from 1-13 for second card
            var secondRandomNumber = Int(arc4random_uniform(13))
            var secondCardString:String = self.cardNamesArray[secondRandomNumber]
            self.secondCardImageView.image = UIImage(named: secondCardString)
    
    
            // Determine the higher card
            if firstRandomNumber > secondRandomNumber{
                //TODO: first card is lager
                player1Total+=1
                self.Player1Score.text = String(player1Total)
            }else if(firstRandomNumber == secondRandomNumber){
                // ERROR: TRYING TO CHANGE BUTTON IMAGE
                self.playRoundButton.setImage("duellogo", forState: UIControlState.Normal)
                //    ^^ ERROR
            }else{
                //TODO: second card is larger
                player2Total+=1
                self.Player2Score.text = String(player2Total)
            }
        }
    }