Andy Chen
Andy Chen

Reputation: 41

How to change UIButton image after clicking in Swift?

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)
        }
    }
}

Upvotes: 4

Views: 15695

Answers (5)

Jay23
Jay23

Reputation: 57

If you want to change the Image of a button you first have to go to your Main.storyboard. Then on the right side, you have to select the Attribute Inspector. Under the headline "Button" you can find the field image, there you can select images stored in your Assets.

Upvotes: 0

Henry
Henry

Reputation: 414

Swift 3:

self.addButton.setImage(UIImage(named: "pending"), for: .normal)

Upvotes: 1

Bigfoot11
Bigfoot11

Reputation: 921

You can try this code for your image:

self.playRoundButton.image = UIImage(named: "duellogo.png")

Hope this can help you.

Upvotes: -1

prema janoti
prema janoti

Reputation: 169

Try this code

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

Upvotes: 3

Wain
Wain

Reputation: 119041

Baically, use the same code you have previously to create an image from the name (rather than just specifying the name):

UIImage(named: @"duellogo")

Upvotes: 0

Related Questions