当我点击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()
}
我只想通过一次选择更改单元格点击上的图像
答案 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
这不会导致任何与重新加载单元有关的问题。 希望这会有所帮助。