点击时无法更改 UItableViewCell 中按钮的图像

Posted

技术标签:

【中文标题】点击时无法更改 UItableViewCell 中按钮的图像【英文标题】:Unable to change image of button in UItableViewCell on click 【发布时间】:2016-02-14 08:22:55 【问题描述】:

我有一个包含多个单元格的 UITableView,每个单元格中都有一个按钮。第一个单元格中的按钮为绿色,其余为灰色。我想设置它,如果用户点击任何灰色按钮,第一个单元格中的按钮变为灰色,点击的按钮变为绿色。

@IBOutlet weak var answeredTick: UIButton!
cell.answeredTick.tag = indexPath.row


@IBAction func answerTickPressed(sender: AnyObject) 
    guard let answeredTick = sender as? UIButton else  return 

    if let buttonToMakeGrey = answeredTick.viewWithTag(0) as? UIButton 
        buttonToMakeGrey.setImage(UIImage(named: "greyTick.png"), forState: UIControlState.Normal)
     else 
        print("no success")
    

    if let buttonToMakeGrey = answeredTick.viewWithTag(answeredTick.tag) as? UIButton 
        buttonToMakeGrey.setImage(UIImage(named: "greenTick.png"), forState: UIControlState.Normal)
     else 
        print("no success 1")
    

上述方法始终无法将绿色勾号更改为灰色,并打印“不成功”。为什么会这样,我该如何解决?

【问题讨论】:

【参考方案1】:

我认为 AnswerThick 没有标签 0 的视图。

例如:您单击第 3 行按钮,“守卫让被回答的Tick”变量只有“2”视图的标签。它没有第一个单元格的 answersTick 实例。

您可以通过 cellForRowAtIndexPath 访问第一个单元格,然后更改颜色。但是你应该小心 dequeueReusableCellWithIdentifier 单元格,你可以看到多个绿色按钮。

简单的方法:您可以为单元格保存数组。当您按下按钮或单元格时,您可以使用数组更改必要的变量并重新加载 tableView。

【讨论】:

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

如何在点击时更改 UITableViewCell 的部分位置

首次出现时无法在 UITableViewCell 中更改 UILabel 的框架(使用自动布局)

当 UIStepper 在 Swift 4 中以编程方式点击时如何更改 UILabel 的文本,如果它们都在 UITableViewCell 中?

点击时UITableViewCell高度问题

在运行时无法更改和自定义自定义 UITableViewCell 中的 UIButtons 的标题

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