第一页上的所有单元格的内容都是不同的,但是当我们向下滚动时,只有UIImageView
重复,尽管UILabel
不同即可。
我正在使用[UIImageView setImageWithURL:(NSURL *)url]
中的AFNetworking
RestKit
。继承人实施
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
RClubTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RClubTableViewCell"];
RClubObject * club = _clubs[indexPath.row];
[cell.clubImageView setImageWithURL:[NSURL URLWithString:club.clubImageURL]];
cell.nameLabel.text = club.clubName;
return cell;
}
似乎iOS
以某种方式使用先前创建的单元格。想滚动时拥有完全新鲜的细胞。
答案 0 :(得分:0)
您需要使用非零占位符图片调用setImageWithURL:placeholderImage:
,以便从图片视图中删除旧图片。
答案 1 :(得分:0)
我猜你错过了cellForRowAtIndexPath:
的重新分配
你的代码应该是这样的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
RClubTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RClubTableViewCell"];
if(cell == nil)
{
cell = [[RClubTableViewCell alloc] init];
}
RClubObject * club = _clubs[indexPath.row];
[cell.clubImageView setImageWithURL:[NSURL URLWithString:club.clubImageURL]];
cell.nameLabel.text = club.clubName;
return cell;
}
更新:
好。我刚才有同样的问题。这里我在google上的搜索告诉我:由于你是在异步下载图像并且还在滚动,它会被下载并附加到当前可见的其他单元格
<强>解决方案:强>
setImageWithURL: placeholderImage:success:
虽然我没有经过测试,但我觉得这应该有效。 PS:让我知道如果这有效,我也必须这样做:)
答案 2 :(得分:0)
是的,iOS正在重复使用以前创建的单元格。这就是这行代码的作用,因此应用程序不必花时间从头开始创建新单元格:
RClubTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RClubTableViewCell"];
在为此单元格添加新图像之前,清除已回收单元格中的图像:
cell.clubImageView.image = nil;
[cell.clubImageView setImageWithURL:[NSURL URLWithString:club.clubImageURL]];
cell.nameLabel.text = club.clubName;
return cell;
或者,您可以从头开始创建一个新单元格,而不是将其单元格出现。