问题描述
||
我在每个像元网格中的每个像元中都有一个带有多个
UILabel
的UITableView
。我添加了ѭ2来对每个标签进行一些操作(例如更改其背景)。一切正常。
但是问题是,每当我向上或向下滚动时,在单元格中选择的标签就会失去其选择状态。当我搜索时,有人建议我创建具有不同单元格ID的单元格或改用UIScrollView
,但是与在UITableViewCell
的contentView
中添加多个标签相比,这两种方法都将占用更多的内存。
滚动时如何在每个单元格中保留UILabel
s的选择状态?
解决方法
由于选择状态是准确绘制每个单元格所必需的,因此应将每个标签状态的属性添加到单元格的后备模型对象中。然后在ѭ7中,您可以从模型对象确定每个标签的正确选择状态:
- (void)tableView:(UITableView*) cellForRowAtIndexPath:(NSIndexedPath*)path {
CustomCell *cell; // trimmed for brevity
CellModelObject *modelObject; // this would be pulled from an array,dictionary,or some other collection
cell.firstLabel.selected = modelObject.isFirstLabelSelected;
cell.secondLabel.selected = modelObject.isSecondLabelSelected;
// etc.
return cell;
}
当滚动表并重复使用单元格时,无论单元格先前显示什么,其状态都将设置为“ 9”。
, 我想到的第一件事是创建一个存储标签状态的nsmutablearray,然后在then10ѭ中使用此数组设置标签的背景。这应该可行,但是可能会有更好的解决方案,感觉像黑客一样。