我目前在我的项目中有一个TableView,它设置为在按下时将单元格变为绿色,如果再次按下则返回清除。但是,如果我向下滚动到表格视图的底部,然后向上滚动,我的所有单元格都会重置为默认的清晰颜色。
我不知道如何解决这个问题,因为我发现的任何内容都是在Objective-C而不是Swift中。关于如何解决这个问题的任何帮助和建议都会很棒,谢谢。
答案 0 :(得分:1)
每当UITableViewCell离开屏幕时,您在tableViewController / ViewController中编写的任何函数都会再次运行。
例如在cellForRowAtIndexPath中,如果你有一个cell.setUpCell()或类似的东西,它会重新运行并将你的值重置为原始值。
如果你有
你的MainVC中的var name = testName并且您更新了单元格中的内容,您也应该更改mainVc中的名称。
答案 1 :(得分:1)
每次滚动或调用tableView.reloadData()
UITableView单元格都会重新加载。因此,每次选择UITableViewCell时,将选定的索引(indexPath.row)添加到didSelectRowAt indexPath:
委托中的数组(例如:selectedIndexArray)。如果您选择的单元格已被选中,则从 selectedIndexArray 中删除单元格。
在cellForRowAt indexPath:
使用 selectedIndexArray 管理单元格。
var selectedIndexArray:[Int] = [] //to save selected tableViewCells
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let isSelected = false
for each in selectedIndexArray
{
if each == indexPath.row
{
isSelected = true
}
}
if isSelected == true
{
//set selected cell color
}
else
{
//set default cell color
}
}
您需要编写在didSelectRowAt indexPath:
中添加和删除单元格索引的逻辑。