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

时间:2016-02-14 08:22:56

标签: ios swift uitableview uibutton

我有一个带有多个单元格的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 个答案:

答案 0 :(得分:0)

我认为answersThick没有Tag 0的视图。

例如:你点击第3行按钮" guard let answersTick"变量只有" 2"的标记。视图。它没有第一个单元格的answersTick实例。

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

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