テーブルビューセル内に画像を表示するために、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で提供されているいくつかのソリューションを試しましたが、すべてがメインスレッドで実行されているため、もう何をすべきかわかりません。
助けていただければ幸いです。前もって感謝します。敬具...