停止重用单元以获取Ios中的新数据

时间:2018-06-28 10:54:27

标签: ios iphone

我创建了一个UITableView的{​​{1}}。我使用UILabelUIImageView制作了一个自定义单元格。由于某些原因,我在其中使用了自定义单元格视图。

现在我有一个模型数组/列表,其中有一个IsSlectedForList字段,我正在使用此字段。如果为true,则必须标记我的复选框,如果为false,则将其保持原样。

我的探针: 我的问题是,一切工作正常,但是当我滚动列表时,我观察到其他单元格的复选框也被选中,直到并且除非我进入列表底部。

我做了什么::我相信像android一样,我们必须停止重用以前的单元格,以便获得具有正确数据的新单元格。但由于我不熟悉ios,因此无法弄清楚应如何在IOS中完成此操作。

  

请帮助我。我只想要那些不是   所选内容不应在滚动条上得到检查。

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = lvOptionalClasses.dequeueReusableCell(withIdentifier: "cellSSClasses") as! ItemSSClassLevelsTableViewCell


    if let list = listClassLevles {

        let classLevel = list[indexPath.row]
        cell.awakeFromNib()


        cell.tvClassLevelName.text = classLevel.Name
        cell.setSelected(false, animated: true)

        if let isSelected = classLevel.IsSelectedInList{
            if(isSelected){
            cell.setSelected(isSelected, animated: true)
                print(classLevel.Name)
            }
        }
    }


    return cell
}





func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.setSelected(false, animated: false)
}


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

listClassLevles![indexPath.row].IsSelectedInList = true


}


func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
      listClassLevles![indexPath.row].IsSelectedInList = false
}


func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle.init(rawValue: 3)!
}

1 个答案:

答案 0 :(得分:0)

在您的代码中,在else块中插入条件

if let isSelected = classLevel.IsSelectedInList{
   if(isSelected){
        cell.setSelected(isSelected, animated: true)
        print(classLevel.Name)
    } else {
        //You must write your else logic here too
    }
} else {
        //You must write your else logic here too
}