在UITableView中滚动时图像变得混乱

时间:2013-01-21 14:39:20

标签: ios objective-c xml uitableview xml-parsing

您好在这里找到答案: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!

2 个答案:

答案 0 :(得分:1)

因为你正在使可重复使用的细胞出列。它正在回收具有先前使用过的图像的单元格。

我注意到您正在将图像设置在初始化单元格的同一块中。如果我是你,我会在你的退货声明之前移动[cell.contentView addSubview:customImage];。这样,当它回收一个出列的单元格时,它就不会有图像。

答案 1 :(得分:0)

图像是从网上下载的吗?

如果是这样,那么下载图像的延迟将导致这种情况。您需要以多线程方式执行此操作。

看看这个例子......

Question about Apple's LazyTableImages sample - Doesn't behave exactly like the app store

网上还有很多关于延迟加载图片和UITableView的教程。