您好在这里找到答案:Images getting mixed up in a UITableView - XML parsing
我正在解析一个XML文件,其中包含指向我正在放入UITable的图像的链接。出于某种原因,当我向下滚动表格时,图片完全混淆了。这是我用于UITable的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
Tweet *currentTweet = [[xmlParser tweets] objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
CGRect imageFrame = CGRectMake(2, 8, 40, 40);
customImage = [[UIImageView alloc] initWithFrame:imageFrame];
[cell.contentView addSubview:customImage];
}
NSString *picURL = [currentTweet pic];
if (![picURL hasPrefix:@"http:"]) {
picURL = [@"http:" stringByAppendingString:picURL];
}
customImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:picURL]]];
return cell;
}
知道我做错了什么吗?任何帮助都非常感谢。 THX!
答案 0 :(得分:1)
因为你正在使可重复使用的细胞出列。它正在回收具有先前使用过的图像的单元格。
我注意到您正在将图像设置在初始化单元格的同一块中。如果我是你,我会在你的退货声明之前移动[cell.contentView addSubview:customImage];
。这样,当它回收一个出列的单元格时,它就不会有图像。
答案 1 :(得分:0)
图像是从网上下载的吗?
如果是这样,那么下载图像的延迟将导致这种情况。您需要以多线程方式执行此操作。
看看这个例子......
Question about Apple's LazyTableImages sample - Doesn't behave exactly like the app store
网上还有很多关于延迟加载图片和UITableView
的教程。