Я пытаюсь интегрировать UICollectionView с несколькими изображениями. Я извлекаю изображения из API динамически и загружаю их непосредственно в UICollectionViewCell с помощью библиотеки SDWebImage. Его работа прекрасна для меня. Но теперь я пытаюсь загрузить загруженные изображения из каталога документов в UICollectionViewCell, он показывает изображение в неправильной ячейке. Каждый раз, когда я загружаю UICollectionViewCell или прокручивать его изображения переодеться в камереПроблема с загрузкой изображения UICollectionviewCell
-(void)setImageFromDocumentDirWithName:(NSString *)strImageName setImageToView:(UIImageView *)imgView imgURL:(NSURL *)url{
NSString *workSpacePath=[[Utility applicationDocumentsDirectory] stringByAppendingPathComponent:strImageName];
BOOL fileExists=[[NSFileManager defaultManager] fileExistsAtPath:workSpacePath];
if (fileExists) {
imgView.image=[UIImage imageWithData:[NSData dataWithContentsOfFile:workSpacePath]];
}
else{
[imgView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"Default1"]];
}
}
Когда я загружать изображения только с сервера напрямую он отлично работает для меня. Но я хочу проверить, присутствует ли файл с изображениями в моем каталоге документов или нет. Если ДА, то загрузите его из каталога документов, иначе загрузите его с сервера. Пожалуйста, предоставьте свои ценные предложения.
Здесь я устанавливаю ячейки
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell"
forIndexPath:indexPath];
UILabel *recipeNameLabel = (UILabel *)[myCell viewWithTag:200];
recipeNameLabel.text = [[arrAddSpace objectAtIndex:indexPath.row] objectForKey:@“name”];
UIImageView *imgSpace = (UIImageView *)[myCell viewWithTag:100];
NSString *strURL = [NSString stringWithFormat:@"%@",[[arrAddSpace objectAtIndex:indexPath.row] objectForKey:@"thumbnail_url"]];
if ([strURL length]!=0 || ![strURL isEqualToString:@""]) {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",strURL]];
[self setImageFromDocumentDirWithName:[[arrAddSpace objectAtIndex:indexPath.row] objectForKey:@"thumbnail_url"] setImageToView:imgSpace imgURL:url];
return myCell;
}
}
Do у вас есть исходный код, где вы устанавливаете содержимое ячейки? У меня была проблема, похожая на вас. Я не уверен, что это ваш случай, но когда вы просматриваете таблицу или коллекцию, iOS пытается повторно использовать ячейки с тем же типом. Итак, если вы загрузили предыдущее изображение в существующую ячейку, новое изображение, которое вы загружаете для показа в «новой» ячейке, не будет отображаться до тех пор, пока вы его не загрузите. Итак, старый будет до этого. – EnriMR
UIImageView * imgSpace = (UIImageView *) [myCell viewWithTag: 100]; [self setImageFromDocumentDirWithName: [[arrAddSpace objectAtIndex: indexPath.row] objectForKey: @ "thumbnail_url"] setImageToView: imgSpace imgURL: url]; –
Я передаю imgview, на котором я хочу показать это изображение как параметр метода setImageFromDocumentDirWithName. –