我必须在单个单元格中显示11个图像,所有图像都是从服务器下载的,所以当我的tableview显示时,我想从服务器上下载所有图像&在自定义单元格中显示它。我使用了lazyloading示例代码。但是t可以一次下载1张图像。根据我的要求,这是不可行的。有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
[NSThread detachNewThreadSelector:@selector(downloadImage:) toTarget:self withObject:@"Image URL"];
-(void)downloadImage:(NSString *)inURL { NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc]init]; UIImage *theImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:inURl]]; [self performSelectorOnMainThread:@selector(uploadImage:) withObject:theImage waitUntilDone:NO]; [thePool drain]; }
-(void)uploadImage:(UIImage *)inImage { [inImage retain]; // add image to View.[inImage relese]; }
答案 1 :(得分:1)
我喜欢使用ASIHTTPRequest and ASINetworkQueue同时下载多个项目,它非常简单但功能强大且可扩展。您将逐个获得请求完成回调,并可以在下载图像时显示图像,您还可以轻松跟踪单个下载和整个队列的进度。
使用您创建的NSOperationQueue(或ASINetworkQueue,见下文) 您自己可以更好地控制异步请求。使用时 一个队列,只有一定数量的请求可以同时运行。 如果添加的请求多于队列的maxConcurrentOperationCount 属性,请求将在他们开始之前等待其他人完成。
答案 2 :(得分:0)
我想你只调用一次服务器端代码;您需要为要下载的每个图像调用一次。 如果您使用代理人,则必须为要下载的所有图像调用它。
答案 3 :(得分:0)
从概念上讲,为了同时下载多个图像(这是您要实现的目标),您必须在线程中实现图像下载请求。
下载完成后发送通知并处理相同内容以在UI上加载新下载的图像。
祝您好运..!
答案 4 :(得分:0)
AsyncimageView是满足需求的完美解决方案。请看这里: http://www.markj.net/iphone-asynchronous-table-image/