通过单击更改 UIButton 的图像 - Swift

Changing image of UIButton via click - Swift

我收到此代码的错误.. 它应该做什么:当用户点击按钮时,图像变为已选中,再次点击,变为未选中。

我收到错误:AnyObject 没有成员名称 'setImage ...

 @IBAction func tick(sender: AnyObject) {
    if let image = UIImage(named:"Unchecked") {
        sender.setImage(UIImage(named:"Checked.png"), forControlState: .Normal)
    }
    if let image = UIImage(named:"Checked") {
        sender.setImage( UIImage(named:"Unchecked.png"), forControlState: .Normal)
    }
}

您必须明确告诉您的 compiler senderUIButton 而不是 AnyObject 类型。

    @IBAction func tick(sender: AnyObject) {
     if let button = sender as! UIbutton {
        if let image = UIImage(named:"Unchecked") {
            button.setImage(UIImage(named:"Checked.png"), forControlState: .Normal)
        }
        if let image = UIImage(named:"Checked") {
            button.setImage( UIImage(named:"Unchecked.png"), forControlState: .Normal)
        }
      } 
    }

你可以这样做:

var checked = false

@IBAction func tick(sender: UIButton) {

    if checked {
        sender.setImage( UIImage(named:"Unchecked.png"), forState: .Normal)
        checked = false
    } else {
        sender.setImage(UIImage(named:"Checked.png"), forState: .Normal)
        checked = true
    }
}

你只需要把(sender:AnyObject)改成(sender:UIButton) 如下

@IBAction func tick(sender: UIButton) {
    if let image = UIImage(named:"Unchecked") {
        sender.setImage(UIImage(named:"Checked.png"), forControlState: .Normal)
    }
    if let image = UIImage(named:"Checked") {
        sender.setImage( UIImage(named:"Unchecked.png"), forControlState: .Normal)
    }
}