单选在UITableview中不起作用

时间:2019-05-29 13:19:53

标签: ios swift uitableview

当我点击cell时,我只是在UIButton上更改图像。该函数正在调用,但是Image没有改变。我想做Single Selection


 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CellRID") as! PaymentCell
        cell.btnCheckUnCheck.setImage(UIImage(named: "CheckTerm"), for: .normal)
    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CellRID") as! PaymentCell
        cell.btnCheckUnCheck.setImage(UIImage(named: "uncheckTerm"), for: .normal)
        tableview.reloadData()
    }



我只想通过一次选择更改单元格点击上的图像

3 个答案:

答案 0 :(得分:2)

替换

let cell = tableView.dequeueReusableCell(withIdentifier: "CellRID") as! PaymentCell

使用

guard let cell = tableView.cellForRow(at:indexPath) as? PaymentCell else { return }

但是更好的方法是将模型更改为该indexPath的新图像,然后重新加载tableView以避免出队问题

答案 1 :(得分:0)

您可以在PaymentCell中处理按钮选择:

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // get image according to cell selection
    let image = selected ? UIImage(named: "CheckTerm") : UIImage(named: "uncheckTerm")
    // update button image
    btnCheckUnCheck.setImage(image, for: .normal)
}

答案 2 :(得分:0)

在视图控制器中使用属性,该属性将存储当前所选索引的详细信息。

seletedIndex

tabBarController.selectedIndex = #index of your controller# 的{​​{1}}方法中

var selectedIndexPath : IndexPath?

将以下方法更改为

cellForRowAt

这不会导致任何与重新加载单元有关的问题。 希望这会有所帮助。