ios表格视图单元格按行索引顺序加载图像

Posted

技术标签:

【中文标题】ios表格视图单元格按行索引顺序加载图像【英文标题】:ios table view cell load images in the order of row index 【发布时间】:2015-01-19 09:21:03 【问题描述】:

在表格视图中配置单元格,我使用

-(void)setImageWithURLRequest:(NSURLRequest *)urlRequest placeholderImage:(UIImage *)

AFNetworking 中的方法从 web 加载单元图像(放入 cellForRowAtIndexPath 中)

用户在加载时不会卡住滚动。

----------

问题是每张图片都以随机顺序显示

因为这个方法发送异步请求,

但我希望它们一个接一个地显示,

例如第 1 行单元格中的图像必须在第 0 行单元格中的图像显示后显示, 等等

好像加载可以是异步的(而且必须是)...

但显示应该是同步的(按顺序!)

有没有简单的方法可以做到这一点?

提前致谢

【问题讨论】:

为什么?图像大小不同,因此将以不同的速度下载。有些可能会失败。为什么会因为这些问题而阻止用户看到某些内容? 试图让它看起来平滑,当然不同的显示没有错……但是,有没有办法? 【参考方案1】:

将图像的名称存储在一个数组中,并在 UITableView 的 cellForItemAtIndexPath() 方法中访问它。通过这种方式,您将获得图像的正确顺序。您不应该因为图像的大小不同而一个接一个地显示图像(例如 - 如果图像大小以兆字节为单位,加载将花费大量时间,该时间可用于加载另一个图像)

NSURL *photoURL = [NSURL URLWithString:[[array objectAtIndex:indexPath.row] valueForKey:@"Image"]];
[cell.imgMyPhoto setImageWithURL:photoURL placeholderImage:nil usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

【讨论】:

【参考方案2】:

如果您想一个接一个地显示它们,您可以使用此代码将执行顺序设置为 FIFO,这将为您提供所需的输出。

[[[SDWebImageManager sharedManager] imageDownloader] setExecutionOrder:SDWebImageDownloaderFIFOExecutionOrder];

你可以使用 Utsav Parikh 上面提到的这个方法

NSURL *photoURL = [NSURL URLWithString:[[array objectAtIndex:indexPath.row] valueForKey:@"Image"]];
[cell.imgLogo setImageWithURL :photoURL placeholderImage : kPhotoPlaceholder usingActivityIndicatorStyle : UIActivityIndicatorViewStyleGray];

但不要忘记导入头文件

#import "UIImageView+UIActivityIndicatorForSDWebImage.h"

【讨论】:

以上是关于ios表格视图单元格按行索引顺序加载图像的主要内容,如果未能解决你的问题,请参考以下文章

图像未加载到单元格 - IOS

更新图像高度约束后更新表格视图单元格高度

重新加载单元格中没有图像的表格视图重新加载

ios在表格视图单元格中视觉调整图像大小

表格视图按钮索引单元格

如何在编辑表格视图单元格中的文本字段时重新加载所有表格视图单元格 - iOS Swift