【问题标题】:UICollectionView loads async image in different cells due to reload during async image downloading由于在异步图像下载期间重新加载,UICollectionView 在不同的单元格中加载异步图像
【发布时间】:2014-04-07 00:31:26
【问题描述】:

在加载我的UICollectionView 单元格时,我调用了一个异步下载图像的方法。

然而,在下载过程中,我的集合视图会重新加载,因此当异步图像被下载时,它会被设置在两个不同的单元格中。

我也尝试过使用NSOperationQueue,在dealloc 中我调用cancelAllOperations:,但这不起作用。

取消此下载的最佳方法是什么?有人可以提供一些示例代码吗?

谢谢。

【问题讨论】:

    标签: ios objective-c asynchronous uicollectionview grand-central-dispatch


    【解决方案1】:

    我认为最好的做法是在您需要图像时延迟发起请求,缓存结果,并且在请求完成时对集合的状态不抱任何期望。

    对于某个单元格中的图像请求,重新加载集合并不是一个无效事件。滚开是,但用户可能会向后滚动。所以发出请求,并在请求的完成块中缓存结果并 reloadItemsAtIndexPaths: 在与请求关联的索引路径上。

    My answer here,提供工作代码。

    【讨论】:

    • 这个问题对我来说似乎应该比这容易得多?我不明白为什么在图像下载时还有一个指向UIImageView 的指针。
    • 您可能需要发布代码。另外,你是说你做了一项任务,但看到两个单元格中的图像视图发生了变化? (这听起来不太可能。在您看来不同的两个请求更有可能产生相同的图像)。
    • 有一系列事件。获取单元格->异步加载图像...重新加载单元格并添加一些单元格->获取单元格->同步加载图像->在与第一次加载相同的索引路径的单元格中加载一个图像->在相同索引路径的单元格中加载第二个图像作为第二次加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多