通过点击改变UIButton的图像 - Swift

时间:2015-07-08 09:46:31

标签: swift uibutton uikit

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

我得到错误: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)
    }
}

3 个答案:

答案 0 :(得分:1)

您必须明确告诉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)
        }
      } 
    }

答案 1 :(得分:1)

您只需将(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)
    }
}

答案 2 :(得分:0)

你可以这样做:

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