我尝试在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
,如果在哈希表,简单地使用它,所以不会有无限循环。
但有一个简单的方法来使图像显示出来? 设置一个占位符图像的作品,但如果我们不这样做 - 通过什么样的机制不占位导致图像的刷新?