【发布时间】:2009-11-15 01:09:14
【问题描述】:
我有一个关于 UITableView 中自定义单元格的快速“最佳实践”问题。 当我在
- (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 {
但我真的不知道这对我有什么帮助:)
希望有人能指出这类事情的“最佳实践”。
谢谢!
【问题讨论】:
标签: iphone uitableview uilabel