URLからいくつかのイメージをコレクションビューに表示しようとしています。しかし、私がそうしようとすると、私の画像はコレクションビューに表示されますが、それらはランダムにリフレッシュとリロードを続けます。また、私はcollectionViewをスクロールしようとすると、もう一度、私は欲しくないデータ全体をリロードします。私はちょうどユーザーにプレビューのようなイメージを表示したいと思う。 URLから画像を取得してコレクションビューに表示するコードを以下に示します。CollectionView iOSでイメージの自動再読み込みと再表示を停止する方法
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
__block NSString *filename;
for(NSDictionary *item in [jsonSD objectForKey:@"Data"]) {
for (int i=0; i<=[[item objectForKey:@"Count"]integerValue]; i++) {
filename=[NSString stringWithFormat:@"http://..URL../media/content/%@%@%d_1.png",_getstring,[item objectForKey:@"subcategory_id"],i];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *url = [NSURL URLWithString:filename];
[self downloadImageWithURL:url completionBlock:^(BOOL succeeded, NSData *data) {
if (succeeded) {
iv.image = [[UIImage alloc] initWithData:data];
}
}];
});
}
}
return cell;
}
- (void)downloadImageWithURL:(NSURL *)url completionBlock:(void (^)(BOOL succeeded, NSData *data))completionBlock
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (!error) {
completionBlock(YES, data);
} else {
completionBlock(NO, nil);
}
}];
}
ここで 'iv'は私のimageViewで、私はコレクションビューのセルに画像を表示します。 関連するコンテンツを検索しようとしましたが、上記の問題について何も考えていませんでした。
私を助けてください。どんな助けもありがとうございます。
あなたはそれを正しく見つけました。私は単一のセルにすべての画像を表示したくありません。私は単一の画像を一つの細胞にしたい。 – ammy1
私を助けてくれますか? – ammy1
@ Greg-提案をいただきありがとうございます。私はそれを試してみます。 – ammy1