UItableViewCell自定义ContentView,带有多个标签,需要保留选择

时间:2011-06-23 17:59:35

标签: ios uitableview state-management multipleselection

我有一个UITableView,每个单元格中有多个UILabel,就像网格视图一样。我添加了UIGestureRecognizer来对这些标签中的每一个执行某些操作(例如更改其背景)。一切都很好。

但问题是无论何时我向上或向下滚动,单元格中选择的标签都会松开其选择状态。当我搜索某些人时,建议我创建具有不同小区ID的小区或使用UIScrollView代替,但两种方法将使用更多内存比较来在UITableViewCell的{​​{1}}中添加多个标签

滚动时如何保留每个单元格中contentView的选择状态?

2 个答案:

答案 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