iOS:ReusableCell 更改我的重用数据
Posted
技术标签:
【中文标题】iOS:ReusableCell 更改我的重用数据【英文标题】:iOS: ReusableCell changing my data on reuse 【发布时间】:2011-01-29 17:46:57 【问题描述】:我对可重复使用的表格单元格有疑问。我只加载了 11 个单元格,其中几乎所有内容都已正确下载、解析和显示。
我遇到的问题是,我看到了一个 UIImageView 正方形,它的背景颜色对该行来说是唯一的。当设备旋转或表格视图向上或向下滚动(从而删除未使用的单元格)时,颜色会变为其他颜色之一。
我不完全确定如何阻止这种情况。目前
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
正在被调用,并在此检测方向,创建单元标识符,创建单元并将内容添加到单元中。
任何帮助都会很棒!
【问题讨论】:
【参考方案1】:您使用什么作为单元格标识符?使用一些独特的东西,比如
NSString *cellIdentifier = someObject.someProperty;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
someObject.someProperty
可以是例如 item.title
【讨论】:
【参考方案2】:嗯,这就是出队的工作原理。尽管从概念上讲有 11 行,但实际上 ios 允许您作弊并重复使用其中的一些,因此它的运行速度要快得多。
您只需要记住,如果您向表格视图询问一个已出队的单元格,您仍然需要重新配置它以显示正确的数据。
如果您的问题是因为您的单元实际上进行了内部处理……请不要这样做。将那段代码移到别处。 ;)
【讨论】:
【参考方案3】:要创建 tableviewCells,您需要使用唯一的单元格标识符,但该 tableview 中的所有单元格都需要相同的标识符,因此:
static NSString *cellIdentifier = @"YOURINDETIFIER";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
现在您将设置您的单元格属性。
如果您使用的是自定义单元格,请务必重新配置所有子视图,否则您会从以前使用的单元格中获得人工制品。
你能在 cellForRowAtIndexPath 中发布你在做什么吗?
【讨论】:
以上是关于iOS:ReusableCell 更改我的重用数据的主要内容,如果未能解决你的问题,请参考以下文章
更改首选内容大小后,我的一些可重用单元格标签中的字体大小仍然不变
我们如何在Android中重用已经在IOS中创建的Sqlite文件[重复]