首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS上,如何让cell.imageView刷新其内容?

在iOS上,如何让cell.imageView刷新其内容?
EN

Stack Overflow用户
提问于 2012-08-31 13:29:33
回答 2查看 6.7K关注 0票数 3

我正在tableView:cellForRowAtIndexPath中进行实验,通过调用

代码语言:javascript
复制
[self downloadImage:urlString andSetIntoCellImageView:cell]

downloadImage中,它将调用NSURLConnection:sendAsynchronousRequest (仅限iOS 5及更高版本),并在完成块中使用以下命令设置图像

代码语言:javascript
复制
cell.imageView.image = [UIImage imageWithData:data];   // data is downloaded data

如果在tableView:cellForRowAtIndexPath中,imageView填充了一个虚拟占位符图像--我想知道新图像是如何刷新的,它是由setNeedsDisplay重新绘制的吗?但是如果我不设置占位符图像,那么新的图像将根本不会显示。我想知道有什么机制可以让它显示图像?

如果我使用

代码语言:javascript
复制
[cell.imageView setNeedsDisplay]

代码语言:javascript
复制
[cell setNeedsDisplay];

在完成块中,它不会工作,如果我使用

代码语言:javascript
复制
[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                            withRowAnimation:UITableViewRowAnimationAutomatic];

在完成块中,通过让downloadImage接受indexPath,它将再次调用tableView:cellForRowAtIndexPath,并导致无限循环。因此,我似乎需要使用一些哈希表来记住图像是否已经在哈希表中:如果没有,调用downloadImage,如果在哈希表中,只需使用它,这样就不会有无限循环。

但是有没有一种简单的方法可以让图像显示出来呢?设置占位符图像是可行的,但是如果我们不这样做呢--占位符通过什么机制导致图像刷新呢?

EN

Stack Overflow用户

发布于 2012-08-31 13:35:34

这并不能直接回答您的问题,但解决问题的一个简单方法是在cellForRowAtIndexPath:中使用SDWebImage。他们的自述文件页面上的示例完全实现了您想要做的事情。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12209380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档