点击时无法更改 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 中?