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

时间:2015-01-19 09:21:04

标签: ios uitableview uiimage afnetworking

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

-(void)setImageWithURLRequest:(NSURLRequest *)urlRequest placeholderImage:(UIImage *)
AFNetworking 的方法,用于从网络加载单元格图像(将其放入cellForRowAtIndexPath)

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

- - - - - - - - - -

问题是每个图像都以随机顺序显示

因为此方法发送异步请求,

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

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

它可能是异步的(并且必须是)...

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

有一种简单的方法吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果要逐个显示它们,可以使用此代码将执行顺序设置为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"