0

我在每个单元格中有一个UITableView带有多个UILabels 的网格视图。我添加了一个UIGestureRecognizer对这些标签中的每一个执行一些操作(例如更改其背景)。一切正常。

但问题是每当我向上或向下滚动时,在单元格中选择的标签都会失去其选择状态。当我搜索时,有人建议我创建具有不同单元格 ID 的单元格或改用,但与在'sUIScrollView中添加多个标签相比,这两种方法都会使用更多内存。UITableViewCellcontentView

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

4

2 回答 2

0

我首先想到的是创建一个 nsmutablearray 来存储标签的状态,然后使用这个数组cellForIndexPath:来设置标签的背景。这应该可行,但可能有更好的解决方案,感觉不像黑客。

于 2011-06-23T18:06:41.503 回答
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无论单元格先前显示什么,它的状态都会被设置。

于 2013-04-14T20:39:42.043 回答