2012-01-28 60 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。

希望它有幫助