Swift UITableView Cell滚动时会更改图像

时间:2019-02-20 18:59:43

标签: ios swift uitableview

我的tableview单元格中有一个图像,当选中该单元格时,该图像将变为黑色,而默认单元格将变为灰色。问题是,当我向下滚动屏幕并再次向上滚动时,图像将像没有被选择为“ cellSelected”一样被调回。因此,在滚动所选单元格后,图像应为“ cellSelected”,而其图像为“ cellNotSelected”。如何确保我的应用程序记住所选的单元格图像?

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! CustomerSelectsBusinessesCell
    cell.selectedCell.image = UIImage(named: "cellSelected")

    updateCount()
}

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! CustomerSelectsBusinessesCell
    cell.selectedCell.image = UIImage(named: "cellNotSelected")
    updateCount()
}

1 个答案:

答案 0 :(得分:2)

您需要将状态更改保存在数据模型中的某个位置,然后编辑数据源方法(特别是cellForRowAtindexPath)以显示处于新选定状态的单元格。

对单元格所做的任何更改都是如此。如果单元格在屏幕外滚动,它将被回收,并且您对其视图所做的任何自定义都将不再与该indexPath关联。因此,当用户对单元格采取操作时,您始终需要将信息记录在数据模型中。