我有一个带有多个单元格的 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")
}
}
上面总是无法将绿色勾号更改为灰色,并打印“没有成功”。这是为什么?我该如何解决它?
最佳答案
我认为answerThick没有标签0的 View 。
例如:您单击第三行按钮,“guard letanswerTick”变量仅具有“2” View 的标记。它没有第一个单元格的answerTick 实例。
您可以通过 cellForRowAtIndexPath 访问第一个单元格,然后更改颜色。但是,您应该小心 dequeueReusableCellWithIdentifier 单元格,您可以看到多个绿色按钮。
简单的方法:您可以保存单元格数组。当您按下按钮或单元格时,您可以使用数组更改必要的变量并重新加载 tableView。
关于ios - 单击时无法更改 UItableViewCell 中按钮的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389771/