我只是有一个关于 UITableView 中自定义单元格的快速“最佳实践”问题。当我在 if(cell == nil) 块中构建自定义单元格时出现了我的问题
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
(1) 如果我构建标签并在 (cell == nil) 块内设置这些的文本属性;只有屏幕上可见的单元格中会有正确的文本,其余的将被重复使用。
(2) 好的,所以我尝试将自定义单元格的构建移到块外。这当然会导致我的单元格在每次用户滚动时一遍又一遍地重绘……并且彼此重叠。
(3) 我还尝试将自定义单元格(标签、图形等)的绘图放置在 (cell == nil) 块内,但在块之后设置 labels.text 属性。这是无法完成的,因为我的 UILabel 无法从它们被实例化的块外部访问。我可以为 (UILabel *l in cell.contentView.subviews ) 做一些疯狂的事情,但这需要每个 if 语句标签,可能还有一些标签来识别它们。
(4) 然后我可以在 (cell == nil) 块之前声明所有标签,然后在块内进行实例化和绘图,并在 (cell == nil) 块之后设置 text 属性。但是当我通过 10 个 UIlabels 时,这看起来和感觉真的很乱,让它们像这样在 (cell == nil) 块内部和外部散布开来,而且每次表格必须“刷新”时都会声明它们。
我问的原因是因为在使用 2-4 个标签时我总能找到解决方法,但这次我需要设置 12 个自定义 UILabel,我想这样做,这样我就必须重绘最少数量的图形,因为可能会有很多细胞。
我已经看到人们和 Apple 文档使用的示例:
- (void) configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
但我真的看不出这对我有什么帮助:)
希望有人能指出这类事情的“最佳实践”。
谢谢!