【发布时间】:2013-02-23 19:39:35
【问题描述】:
首先这不是重复的。我看到了一些相同的问题,但它们对我没有帮助,因为我的问题略有不同。
使用以下代码,我在我的项目中异步下载图像。
{
NSURL *imageURL = [NSURL URLWithString:imageURLString];
[self downloadThumbnails:imageURL];
}
- (void) downloadThumbnails:(NSURL *)finalUrl
{
dispatch_group_async(((RSSChannel *)self.parentParserDelegate).imageDownloadGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *tempData = [NSData dataWithContentsOfURL:finalUrl];
dispatch_async(dispatch_get_main_queue(), ^{
thumbnail = [UIImage imageWithData:tempData];
});
});
}
由于程序的逻辑,我在 tableview 控制器以外的文件中使用了上面的代码,它在从 web 服务获取数据后显示所有数据。
问题: 屏幕上的图像在我滚动之前不会显示。首先刷新离屏图像。我该怎么做才能解决我的问题。
Apple 的延迟加载项目正在使用 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 来加载图像,但该项目太大而无法理解,而且我的代码位于 tableview 控制器以外的文件中。
注意:请勿推荐第三方库,如 SDWebImage 等。
更新:由于大多数人无法解决这个问题,我必须澄清这个问题与下载、缓存和重新加载 tableview 中的图像无关。所以请不要推荐第三方库。问题是图像仅在用户滚动表格视图而不是加载屏幕视图时显示。
提前致谢
【问题讨论】:
-
你应该展示你的数据源代码:你是如何得到图像的?如果确实存在保存图像的任何依赖关系,何时调用数据源方法?在保存/下载图像之前/之后?
-
它与我之前在上一个问题中发送给您的项目相同。你能好好看看吗?当我使用模型视图控制器存储设计时,它变得非常混乱,其中连接、存储和数据源文件不同但相互依赖。这就是为什么我没有将所有代码都放在问题中
-
根据您的更新:我相信您的问题在于下载、缓存和重新加载图像。否则,为什么在 cellForRowAtIndexPath 期间不能在单元格中设置它们?
标签: ios objective-c xcode uitableview uiscrollview