我正在tableView:cellForRowAtIndexPath中进行实验,通过调用
[self downloadImage:urlString andSetIntoCellImageView:cell]在downloadImage中,它将调用NSURLConnection:sendAsynchronousRequest (仅限iOS 5及更高版本),并在完成块中使用以下命令设置图像
cell.imageView.image = [UIImage imageWithData:data]; // data is downloaded data如果在tableView:cellForRowAtIndexPath中,imageView填充了一个虚拟占位符图像--我想知道新图像是如何刷新的,它是由setNeedsDisplay重新绘制的吗?但是如果我不设置占位符图像,那么新的图像将根本不会显示。我想知道有什么机制可以让它显示图像?
如果我使用
[cell.imageView setNeedsDisplay]或
[cell setNeedsDisplay];在完成块中,它不会工作,如果我使用
[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];在完成块中,通过让downloadImage接受indexPath,它将再次调用tableView:cellForRowAtIndexPath,并导致无限循环。因此,我似乎需要使用一些哈希表来记住图像是否已经在哈希表中:如果没有,调用downloadImage,如果在哈希表中,只需使用它,这样就不会有无限循环。
但是有没有一种简单的方法可以让图像显示出来呢?设置占位符图像是可行的,但是如果我们不这样做呢--占位符通过什么机制导致图像刷新呢?
发布于 2012-08-31 13:35:34
这并不能直接回答您的问题,但解决问题的一个简单方法是在cellForRowAtIndexPath:中使用SDWebImage。他们的自述文件页面上的示例完全实现了您想要做的事情。
https://stackoverflow.com/questions/12209380
复制相似问题