我有一个UITableView
,每个单元格中有多个UILabel
,就像网格视图一样。我添加了UIGestureRecognizer
来对这些标签中的每一个执行某些操作(例如更改其背景)。一切都很好。
但问题是无论何时我向上或向下滚动,单元格中选择的标签都会松开其选择状态。当我搜索某些人时,建议我创建具有不同小区ID的小区或使用UIScrollView
代替,但两种方法将使用更多内存比较来在UITableViewCell
的{{1}}中添加多个标签
滚动时如何保留每个单元格中contentView
的选择状态?
答案 0 :(得分:0)
首先想到的是创建一个存储标签状态的nsmutablearray,然后在cellForIndexPath:
中使用此数组来设置标签的背景。这应该可行,但可能有一个更好的解决方案,感觉不像黑客。
答案 1 :(得分:0)
由于选择状态是准确绘制每个单元格所必需的,因此您应该将每个标签状态的属性添加到单元格的背景模型对象中。然后在tableView:cellForRowAtIndexPath:
中,您可以从模型对象中确定每个标签的正确选择状态:
- (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;
}
当滚动表并重复使用单元格时,无论单元格先前显示什么,其状态都将设置为cellForRowAtIndexPath
。