1

在有一些单元格的 UITableView 中,每个单元格都有两个 UIImage,我将更新 UIImage 异步以提高性能。但是有一个问题,当从 Web 中提取图像时,我如何才能仅在单元格中重新加载 UIImageView。

我知道可以使用方法“reloadRowsAtIndexPaths”重新加载整个单元格,但我只想知道是否有一种方法只能重新加载单元格中必须重新加载的 UIView 对象(即图像或标签)。

顺便说一句,当我重新加载一个单元格时,我发现方法“reloadRowsAtIndexPaths”将为所有单元格执行“heightForRowAtIndexPath”方法。有什么问题吗?

4

2 回答 2

0

也许来自苹果的示例代码LazyTableImages就是你想要的。

于 2012-07-01T17:02:32.250 回答
0

获取对您的自定义单元格调用的引用tableView:cellForRowAtIndexPath:。然后更新它的 image 属性运行这个:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    NSData *imageData = [NSData dataWithContentsOfURL:someURL];
    dispatch_async(dispatch_get_main_queue(), ^{
        cell.someImage = [UIImage imageWithData:imageData];
    });
});

您将最多同时加载 6 张图像,因为这是 NSURLConnection 的限制。

于 2012-07-01T17:08:30.260 回答