4

custom を使用したUICollectionView実装がありますUICollectionViewCell。データの配列はインターネットから取得されますが、画像はユーザーがコンテンツにアクセスしているときにダウンロードされます。

これはおそらく最も効率的な方法ではなく、このままにしておくつもりはありませんが、解決に苦労している特定の問題が明らかになりました。セルに「キャッシュされた」または「古い」画像が表示されているようで、コレクション ビューをゆっくりとスクロールすると、セルの画像が変化し続けます。

これはおそらく、その時点で実際のセル画像がネットから入手できないという問題であり、私の質問は、空のセルまたは負荷アクティビティモニターを強制的に表示し、誤った画像を表示しないようにするにはどうすればよいですか?

前もってありがとう、ピニオン

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"Event";

EventCollectionViewCell *cell  = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];


NSString *title = [[events objectAtIndex:indexPath.item] objectForKey:@"title"];
NSString *imageUrl = [[[events objectAtIndex:indexPath.item] objectForKey:@"photo"] objectForKey:@"url"];


dispatch_queue_t imageFetchQ = dispatch_queue_create("image fetched", NULL);
dispatch_async(imageFetchQ, ^{

    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]];

    if (imageData)
    {

        dispatch_async(dispatch_get_main_queue(), ^{

            cell.eventImage.image = [UIImage imageWithData:imageData];
            cell.eventTitle.text = title;

        });
    }
});


return cell;

}
4

1 に答える 1