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 更改我的重用数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 应用程序中重用表格视图单元格

更改首选内容大小后,我的一些可重用单元格标签中的字体大小仍然不变

我们如何在Android中重用已经在IOS中创建的Sqlite文件[重复]

根据部分更改单元重用标识符

更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象

iOS,在我的 LaunchScreen Storyboard 的资产目录中重用 AppIcon?