2015-12-04 112 views
0

我想为我的应用程序创建一个“喜欢”按钮。当我按下按钮时,我希望它变成第二张图像,当我再次按下它时,我将它变回第一张图像。UIButton不会改变图像

这里是我的代码:

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

出于某种原因,这行代码的工作我如何想:

if let _ = UIImage(named:"like.png") { 
     sender.setImage(UIImage(named:"pinkLike.png"), forState: .Normal) 
    } 

但是,当我再次按下该按钮,此行不将其更改回来:

if let _ = UIImage(named:"pinkLike.png") { 
     sender.setImage(UIImage(named:"like.png"), forState: .Normal) 
    } 

回答

2

您将这两个图像都设置为正常状态,因此您的"like.png"将始终覆盖"pinkLike.png"图像。

您需要将"pinkLike.png"置于不同的状态。

if let _ = UIImage(named:"pinkLike.png") { 
    sender.setImage(UIImage(named:"like.png"), forState: .Selected) 
} 

并在设置图像之前更改所选状态。所以你的代码将会是这样的。

@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) 
    } 
} 
+0

工作,欣赏它! – Nathan