我正在使用带有自定义UITableViewCell的UITableView开发一个代表大量数据的应用。
当tableView设置为编辑模式时,它支持多种选择,以进一步使用所选数据集。
使用-tableView:didSelectRowAtIndexPath:
和didDeselect
我将行UIImageViews图像更改为一个小刻度并将选择存储到数组中。选择一个单元格时,它会变成浅蓝色背景(iOS标准)。
当我现在再次向下滚动时,单元格背景仍为浅蓝色,但图像重置为默认值,单元格isSelected
属性为NO
。再次选择它会调用-tableView:didSelectRowAtIndexPath:
方法。
经过一段时间的调试后发现可重复使用的标识符是错误的。但是当我纠正它时,向下滚动一遍又一遍地重复相同的12个单元格。 isSelected
属性仍然重置为NO
。
如何在滚动tableView时维护选定的行?!并且:为什么单元格蓝色突出显示(或标记为已选中)但isSelected
属性重置为No
?
感谢您的帮助,亲切的问候,Julian
答案 0 :(得分:0)
不要使用单元格来保持持久控制器状态。而是保留NSArray
并将每个选定单元格的NSIndexPath
添加到数组中(如果/当用户取消选择单元格时,将其删除)。
然后在cellForRowAtIndexPath:
中确保根据索引路径是否在所选单元格的数组中正确配置单元格。