具有多个标签且需要保留选择的UItableViewCell自定义ContentView

问题描述

|| 我在每个像元网格中的每个像元中都有一个带有多个
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ѭ中使用此数组设置标签的背景。这应该可行,但是可能会有更好的解决方案,感觉像黑客一样。