我创建了一个UITableView
的{{1}}。我使用UILabel
和UIImageView
制作了一个自定义单元格。由于某些原因,我在其中使用了自定义单元格视图。
现在我有一个模型数组/列表,其中有一个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)!
}
答案 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
}