2012-01-28 61 views
2

我正在使用ASIHTTPRequest。在使用ASIHTTPRequest时,我遇到以下问题。异步添加图像 - ASIHTTPRequest

1.)我需要将图像添加到UITableView(对于每个单元格)asynchronously。我怎样才能做到这一点 ?

2.)我需要将图像添加到UIViewControllerAsynchronously。 (不是对一个单元格,而是在UIImageView,这是在UIViewController)。

有人可以帮我一些示例代码,示例或教程开始?

+0

可能的重复[如何? UITableViewCell与UIImageView异步加载通过ASINetworkQueue](http://stackoverflow.com/questions/3380791/how-uitableviewcell-with-uiimageview-asynchronously-loaded-via-asinetworkqueue) – JosephH 2012-01-28 19:37:30

回答

6

没有必要引入一个依赖于一个整体框架,如ASIHTTPRequest只是下载一个图像,当你可以使用GCD做到这一点的代码的几个简单的线条:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSData *imageDate = [NSData dataWithContentsOfURL:imageURL]; 
    UIImage *image = [UIImage imageWithData:imageData]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     avatar.image = image; 
    }); 
}); 

这是异步的,所有的善良。但是在几行代码中,您可以编写,理解,修复,扩展和维护自己。

,但如果你是在使用ASIHTTPRequest我建议使用这个优秀的项目Here弯曲是一个示例代码有一个引导线和a brief description.

另一种方式是,你可以使用异步图像视图,而不是默认图像视图。检查教程HereHow? UITableViewCell with UIImageView asynchronously loaded via ASINetworkQueue

+0

嘿,可以在项目中使用多个库?在async-uitableview和ASIHTTPRequest中?以及只有在ASIHTTPRequest中才能使用另一个库时有什么特别之处? (我是初学者),并且简要说明链接以404结尾,您是否可以重新链接它 – Illep 2012-01-28 16:05:52

+0

是的,您可以在同一个项目中使用多个库。 'async-uitableview'是'ASIHTTPRequest之上的一个抽象。 'async-uitableview'特别针对tableview中图像的异步下载。 – 2012-01-28 16:22:00

+0

@Srikar dispatch_async - 我今天第一次看到并使用它。感谢这个信息。它看起来很好用的方法。 – pankaj 2012-04-25 19:09:28

0

基本上(see example page with all the correct syntax)你要做的就是

  • 创建的请求。
  • 将自己设置为完成时的代表。
  • 开始请求。

In - (void)requestFinished:将图像添加到TableView中,就像在普通代码中一样。

+0

我已经在使用'requestFinished'来获取其他数据显示在tableview中。而我将收到的这些数据将链接到我想下载的图像。那么如何再次使用'requestFinished'来下载图像? – Illep 2012-01-28 16:21:43

+0

当requestFinished被调用时,文件已经被下载了,你只需要使用NSData * responseData = [request responseData];去实际下载的内容。 – 2012-01-28 16:24:09

0

我不确定这正是你正在寻找的东西,但请查看苹果公司的lazy image loading example。但他们使用NSURLConnection。

希望它有帮助