我正在创建一个类似于堆栈溢出的论坛应用。有一个UITableView显示问题的答案,每个单元格(包含答案)也包含一个“正确答案”勾选按钮。在任何给定时间,只能选择一个答案作为正确答案。正确答案标有绿色勾号,而其他答案标有灰色勾号(我有两个相同的图像,但颜色不同)。我试图设置它,所以当用户点击灰色的勾选按钮时,当前的绿色按钮变为灰色,而点击的灰色按钮变为绿色。
@IBOutlet weak var answeredTick: UIButton!
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell.answeredTick.tag = indexPath.row
}
@IBAction func answerTickPressed(sender: AnyObject) {
guard let answeredTick = sender as? UIButton else { return }
//indexOfOfficialAnswerId is the currently registered official ID
if let buttonToMakeGrey = answeredTick.viewWithTag(self.indexOfOfficialAnswerId) as? UIButton {
print("success!")
buttonToMakeGrey.setImage(UIImage(named: "greyTick.png"), forState: UIControlState.Normal)
} else {
print("no success")
}
}
然而,它始终打印“没有成功”。 index语句中indexOfOfficialAnswerId的值是正确的。我能够将灰色的answerTicks变为绿色,但我不能让绿色变灰。这是为什么?
更新:如果我点击绿色标记,我可以将绿色标记变为灰色,但如果我点击任何灰色标记,则不会显示绿色标记
答案 0 :(得分:0)
您可以找到带绿色勾号的单元格:
cell.answeredTick.setImage(UIImage(named: "greyTick.png"), forState: UIControlState.Normal)
然后使用你的:
onestep = node.next
对不起Objective-C代码
答案 1 :(得分:0)
尝试在设置该按钮图像或将其状态更改为选中后重新加载该单元格。我猜这可能是问题所在。