0

ビュー コントローラー間で非同期に画像を読み込むのに問題があります。行をクリックするとコレクション ビュー コントローラーを開く tableView コントローラーがあります。コレクション ビューが開くと、画像がインターネットからダウンロードされるため、しばらくハングします。

collectionView:cellForItemAtIndexPath: に以下のコードを入れたのですが、同期読み込みになってしまい、プログラムが遅くなってしまいます。

-(UICollectionViewCell *) collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath{

  static NSString *CellIdentifier = @"CollectionCell";
  CollectionCell *cell = [cv dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
  NSData *imageData = [NSData dataWithContentsOfURL:[self.theImage objectAtIndex:indexPath.row]];
  cell.itemImage.image = [UIImage imageWithData:imageData];

  return cell;
}

私の質問は、画像のダウンロード中にコレクションビューが空のセルをロードする (そしてダウンロード後に表示される) ようにコードを実装する場所方法です。

グランドセントラルディスパッチを使用しようとしましたが、よくわかりませんでした。誰かが私を正しい方向に向けるのを助けることができれば、私はそれを感謝します.

4

1 に答える 1

0

そのような遅延読み込みには、私は常に次を使用します。

https://github.com/rs/SDWebImage

これにより、テーブル/コレクションビューなどで画像を非同期にロードする場合のほとんどの問題が解決します。

すでにダウンロードされた画像のキャッシュをサポートし、頭痛の種を大幅に節約します。

于 2013-02-08T07:59:59.457 に答える