2016-03-09 61 views
4

我一直在使用alamofire-image庫在uicollectionview單元格內顯示來自url的圖像。Alamofire-image加載錯誤圖像在uicollectionview單元格內

我注意到大部分時間顯示正確的圖像,但有時會顯示錯誤的圖像(大部分時間是以前的細胞圖像)。 如何解決這個問題。

 func collectionView(collectionView: UICollectionView, 
     cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

      let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell",forIndexPath: indexPath) as! myCollectionViewCell 

      cell.titleLabelCell.text = element[indexPath.row]["title"] 
      cell.generLabelCell.text = element[indexPath.row]["gener"] 

      let URL = NSURL(string: "\(element[indexPath.row]["banner_site_url"])")! 

      cell.mImageView.af_setImageWithURL(URL) 

      return cell 
     } 
+0

我相信你在後臺下載。這裏的問題是,當滾動速度很快時,單元格已經移動到不同的部分。當圖像返回時,它被分配到錯誤的單元格。我有同樣的問題。我想將請求url字符串設置爲變量,以便分配正確的圖像。 – Ross

回答

4

您必須斷開與重新使用該單元格時可能正在進行的任何圖像下載請求的連接。

你可以找到一個很好的教程在由Todd Kramer寫:

Downloading, Caching, & Decoding Images Asynchronously In Swift With Alamofire: Part 1

注意電池的視圖類PhotoCollectionViewCell的實施。它調用成員函數重設,取消任何現有的請求,然後啓動對當前圖像的請求。

如果圖像很小並且可能重複使用,我傾向於取消單元格更新而不是檢索。

閱讀全部內容。

+0

一種晚了,遷移到了翠鳥圖書館。仍然是最好的答案,並且肯定會嘗試執行上述 –

+0

我剛剛讀過這個。所以這個解決了我的問題,基本上創建了一個共享實例來終止新的進來時的後臺請求。 – Ross

+1

對不起,我來不及幫助你。 –

相關問題