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

标签 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")
    }
}

上面总是无法将绿色勾号更改为灰色,并打印“没有成功”。这是为什么?我该如何解决它?

最佳答案

我认为answerThick没有标签0的 View 。

例如:您单击第三行按钮,“guard letanswerTick”变量仅具有“2” View 的标记。它没有第一个单元格的answerTick 实例。

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

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

关于ios - 单击时无法更改 UItableViewCell 中按钮的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389771/

相关文章:

ios - 如何使用 NSSet 填充 tableView? ( swift )

ios - CoreData 失去关系 - 仅在重新加载后

ios - 快速异步加载tableView图像

ios - 如何在 UITableView 的编辑模式下不显示 "-"删除按钮?

ios - 如何从核心数据获取整数值以加载到文本

ios - 检查枚举中是否存在值

ios - Swift:无法将 [CombinedChartView.DrawOrder] 类型的值分配给 [int] 的值

ios - 有没有办法在 Xcode 11 中使用 iOS 14 SDK?

iphone - 如何检索 UISwitch 的 UITableView 行号?

ios - 我如何才能确定应用程序何时被用户终止?