我有一个带有多个单元格的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")
}
}
以上总是无法将绿色标记更改为灰色,并打印“无效”。为什么这样,我该如何解决?
答案 0 :(得分:0)
我认为answersThick没有Tag 0的视图。
例如:你点击第3行按钮" guard let answersTick"变量只有" 2"的标记。视图。它没有第一个单元格的answersTick实例。
您可以通过cellForRowAtIndexPath访问第一个单元格,然后更改颜色。但是你应该小心dequeueReusableCellWithIdentifier单元格,你可以看到多个绿色按钮。
简单的方法:您可以保存细胞阵列。当您按下按钮或单元格时,您可以使用数组更改必要的变量并重新加载tableView。