Reputation: 13
I'm trying to create a "like" button for my app. When I press the button, I want it to change to a second image, and when I press it again I went it to change back to the first image.
Here is my code:
@IBAction func sendLike(sender: UIButton) {
if let _ = UIImage(named:"pinkLike.png") {
sender.setImage(UIImage(named:"like.png"), forState: .Normal)
}
if let _ = UIImage(named:"like.png") {
sender.setImage(UIImage(named:"pinkLike.png"), forState: .Normal)
}
}
For some reason this line of code works how I want it to:
if let _ = UIImage(named:"like.png") {
sender.setImage(UIImage(named:"pinkLike.png"), forState: .Normal)
}
But when I press the button again, this line doesn't change it back:
if let _ = UIImage(named:"pinkLike.png") {
sender.setImage(UIImage(named:"like.png"), forState: .Normal)
}
Upvotes: 1
Views: 1921
Reputation: 1379
You set both of those image in Normal state, so your "like.png"
will always override "pinkLike.png"
image.
You need to put "pinkLike.png"
in different state.
if let _ = UIImage(named:"pinkLike.png") {
sender.setImage(UIImage(named:"like.png"), forState: .Selected)
}
and change your selected state before setting the image. So your code will be like this.
@IBAction func sendLike(sender: UIButton) {
sender.selected = !sender.selected
if let _ = UIImage(named:"pinkLike.png") {
sender.setImage(UIImage(named:"like.png"), forState: .Normal)
}
if let _ = UIImage(named:"like.png") {
sender.setImage(UIImage(named:"pinkLike.png"), forState: .Selected)
}
}
Upvotes: 4