无法更改 UIButton 图像

Posted

技术标签:

【中文标题】无法更改 UIButton 图像【英文标题】:Trouble changing UIButton image 【发布时间】:2016-01-24 21:41:50 【问题描述】:

我有一个 tableView,我在其中发布用户提要,并在单元格视图中添加了一个心形按钮。我为单元格视图创建了一个类,并在那里声明了我的按钮的@IBOutlet。然后在表格视图的cellForRowAtIndexPath 中,我调用了按钮并将indexpath.row 设置为按钮本身的标记号。然后我添加了一个要完成的操作的目标并创建了我的@IBAction。现在我正在尝试将心形按钮的图像外观更改为红色,但没有任何反应。通过发送方将 UIImage 传递给按钮是否存在问题。我没有错误。 if like = 语句工作正常。这是我的代码:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! PostsCellTableViewCell

        cell.heartButton.tag = indexPath.row
        cell.heartButton.addTarget(self, action: "liked:", forControlEvents: .TouchUpInside)
return cell


@IBAction func liked (sender: UIButton)

        if like == false
        sender.imageView?.image = UIImage(contentsOfFile: "red-heart.png")
            like = true
        
        else
            sender.imageView?.image = UIImage(contentsOfFile: "white-heart-hi.png")
            like = false
        
       // self.tableView.reloadData()
    

【问题讨论】:

【参考方案1】:

试试这个。

    if like == false
        sender.setImage(UIImage(named: "red-heart.png"), forState: .Normal)
        like = true
     else 
        sender.setImage.setImage(UIImage(named: "white-heart-hi.png"), forState: .Normal)
        like = false
    

【讨论】:

甜蜜。很高兴我能提供帮助。只要有机会,接受这个答案就会很棒。【参考方案2】:

这是一个非常简单的错误。您将目标函数声明为“liked:”,但您的函数声明为“liked”。注意第二次缺少冒号。这很关键,应该可以解决问题。如果这不能解决问题,请确保您已声明

var like = false

如果这仍然不起作用,请发表评论,我将继续提供帮助。如果它确实有效,请不要忘记检查我的答案。

【讨论】:

Kegham 的liked(_:) 函数对应的选择器是liked:,带有冒号。 更多信息请见Interacting with Objective-C APIs。 var like = false 是全局声明的。我很遗憾我没有错误。我无法删除该列。我会得到一个错误。

以上是关于无法更改 UIButton 图像的主要内容,如果未能解决你的问题,请参考以下文章

无法更改 UIButton 图像

关闭 SecondViewController 时,firstViewController 中的 UIButton 无法正确更改图像

使用 UIButton 自定义 UITableViewCell:无法更改 UIImage

用其他图像更改 uibutton 的图像

UIButton背景图像没有改变

根据状态更改 UIButton 中 ImageView 的 tint 颜色