2014-09-08 5 views
0

привет, я загружаю удаленные изображения в свой коллекционный вид с помощью SDWebImage. в первый раз, когда он загружается так, как сначала показывает изображение заполнителя, а когда изображение возвращается, измените изображение ячейки ... но второй раз я загружаю одно и то же изображение, верхние видимые строки не показывают изображение, но когда я прокручиваю вниз до другого изображения, они загружаются штрафом. затем я загружаю вверх, изображения есть.SDWebImage проблема с загрузкой.!

В моем CollectionView классе -

- (void)startIconDownload:(TrialImages *)appRecord forIndexPath:(NSIndexPath *)indexPath 
{ 
    TrialPicDownloader *iconDownloader = [_imageDownloadsInProgress objectForKey:indexPath]; 
    if (iconDownloader == nil) 
    { 
     iconDownloader = [[TrialPicDownloader alloc] init]; 
     iconDownloader.productRecord = appRecord; 
     [iconDownloader setCompletionHandler:^{ 
       MyCollectionViewCell *cell = (MyCollectionViewCell *)[self.myCollectionView cellForItemAtIndexPath:indexPath]; 
       cell.trialImageView.image = appRecord.trialImage; 

       [_imageDownloadsInProgress removeObjectForKey:indexPath]; 

     }]; 
     [_imageDownloadsInProgress setObject:iconDownloader forKey:indexPath]; 
     [iconDownloader startDownload]; 
    } 
} 

этот метод находится в TrialPicDownloader классе -

- (void)startDownload 
{ 
    [[SDWebImageManager sharedManager] downloadWithURL: 
[NSURL URLWithString:self.productRecord.TrialImagesUrl] 
            options:SDWebImageCacheMemoryOnly 
            progress:nil 
            completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { 
       if (image != NULL) { 
           self.productRecord.trialImage = image; 
           if (self.completionHandler) 
            self.completionHandler(); 
             } 
            }]; 


} 

ответ

0

NeverMind я был в состоянии решить мою проблему этим кодом ...

- (void)startIconDownload:(TrialImages *)appRecord forIndexPath:(NSIndexPath *)indexPath 
{ 
    TrialPicDownloader *iconDownloader = [_imageDownloadsInProgress objectForKey:indexPath]; 
    if (iconDownloader == nil) 
    { 
     iconDownloader = [[TrialPicDownloader alloc] init]; 
     iconDownloader.productRecord = appRecord; 
     [iconDownloader setCompletionHandler:^{ 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        MyCollectionViewCell *cell = (MyCollectionViewCell *)[self.myCollectionView cellForItemAtIndexPath:indexPath]; 
        cell.trialImageView.image = appRecord.trialImage; 
        [UIView animateWithDuration:0.3f animations:^{ 
          [self.myCollectionView.collectionViewLayout invalidateLayout]; 
        }]; 
        [_imageDownloadsInProgress removeObjectForKey:indexPath]; 
       }); 
     }]; 
     [_imageDownloadsInProgress setObject:iconDownloader forKey:indexPath]; 
     [iconDownloader startDownload]; 
    } 
} 

Я использовал dispatch_async для обработки обработчика завершения в главной очереди и теперь его отлично работает .. !!

Смежные вопросы