3

テーブルビューセル内に画像を表示するために、UITableViewCell内でUICollectionViewを使用しています。バックグラウンドで写真をダウンロードしている間、アクティビティ インジケーターはアニメーション化され、画像は表示されません。写真がダウンロードされると、アクティビティ インジケーターのアニメーションが停止し、写真が表示されます。最初のセルが初めて表示される場合を除いて、すべてが機能します。画像が表示され、アクティビティ インジケーターがアニメーションを続けます。collectionView をスクロールすると、他の画像でも機能し、最初の画像に戻ると機能します。最初の画像が表示されるのは初めてです

コレクションビュー内のセルは PhotoCollectionView と呼ばれ、ヘッダーは次のようになります。

@interface PhotoCollectionCell : UICollectionViewCell

@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;

@end

cellForItemAtIndexPath のコード

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"PhotoCollectionCell";
    PhotoCollectionCell *cell = (PhotoCollectionCell *)[collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.imageView.image = nil;

    UIImage *image = [thumbnails objectForKey:indexPath];
    if(!image) {
        [cell.activityIndicator startAnimating];
        if (self.pictureCollectionView.dragging == NO && self.pictureCollectionView.decelerating == NO)
        {
            [self startDownload:images[indexPath.row] forIndexPath:indexPath];
        }
    } else {
        [cell.activityIndicator stopAnimating];
        cell.imageView.image = image;
    }

    return cell;
}

Webで提供されているいくつかのソリューションを試しましたが、すべてがメインスレッドで実行されているため、もう何をすべきかわかりません。

助けていただければ幸いです。前もって感謝します。敬具...

4

0 に答える 0