Перезагрузите UICollectionViewCell изнутри cellForItemAtIndexPath

Каков наилучший способ повторить неудачную загрузку изображения в cellForItemAtIndexPath? У меня есть представление коллекции, которое может отображать около 20 миниатюрных изображений 80x80. Я использую SDWebImage для загрузки и кэширования изображений в методе cellForItemAtIndexPath, но обнаружил, что каждый раз часто изображение не загружается. Я знаю, что могу использовать блок завершения и проверить, является ли изображение нулевым, но, похоже, оно не перезагружает изображение правильно (изображение по-прежнему никогда не отображается). Это то, как я должен обрабатывать перезагрузку ячейки? Вот пример моего кода.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {   
    NSURL *thumbnailURL = [NSURL URLWithString:url];

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

    [cell.imageView setImageWithURL:thumbnailURL completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
        if (!image) {
            [self.collectionView reloadItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
        }
    }];

    return cell;
}

person wlindner    schedule 14.08.2013    source источник


Ответы (1)


Получил ответ на github

Вам нужно использовать один из методов с параметром «options» и указать SDWebImageRetryFailed вот так...

[cell.imageView setImageWithURL:thumbnailURL placeholderImage:[UIImage imageNamed:@"placeholder.png"] options:SDWebImageRetryFailed Completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {...}];

person wlindner    schedule 21.08.2013