2014-02-27 193 views
2

我正在爲UICollectionView延遲加載圖像。該圖像正在顯示,但是當我滾動UICollectionView時,圖像會改變它們的位置,並且有重複的圖像,所有圖像都應該是唯一的。這裏是我的代碼:延遲加載的圖像問題UICollectionView

- (gridcell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 

    gridcell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"gallerycollection" forIndexPath:indexPath]; 

    NSDictionary *appsdict = [array_grid objectAtIndex:indexPath.item]; 
    cell.image_grid.image=[UIImage imageNamed:@"griddummyloading"]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 

     NSURL *imageURL = [NSURL URLWithString:[appsdict objectForKey:@"iosthumbnail"]]; 

     NSData *imageData = [NSData dataWithContentsOfURL:imageURL]; 

     UIImage *image = [UIImage imageWithData:imageData]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 

      cell.image_grid.image=image; 
     }); 
    }); 

    [collectionview_grid setAllowsSelection:YES]; 

    return cell; 

} 
+0

您是從單元格的'prepareForReuse'方法中刪除單元格中的圖像嗎?如果沒有,它可能會顯示以前使用單元格的圖像。 – bobnoble

+0

我的代碼我需要改變任何東西? – sures

+0

您是否在uicollectionview中使用了多個部分? –

回答

-1

我建議你使用第三方庫來延遲加載圖片,就像this one,同時也支持Web緩存。
另外,還要考慮在Objective-C中使用的約定:
- 避免snake_casing,使用駝峯
- 廣泛使用性質
的 - 使用上層套管類名

-1

嘿那裏有蘋果給出一個很好的例子開發者網站。

This is an example code蘋果演示了一種在表格中進行延遲加載的方式..提到這可能會以某種方式幫助您。 全部最好