0

Описание: -Objective C UI Коллекция вопрос

Здравствуйте, Когда мы бежим этот код, когда клетка перебазирования изображение меняется на прокрутке.

Пожалуйста, дайте мне знать, как исправить.

- (UICollectionViewCell)collectionView:(UICollectionView)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *identifier = @"Cellidentifier"; 
    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 
    NSString * string = [_temp objectAtIndex:indexPath.row]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     // retrive image on global queue 
     UIImage * img = [UIImage imageWithData:[NSData dataWithContentsOfURL:  [NSURL URLWithString:string]]]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      cell.imageView.image = img; 
     }); 
    }); 

    return cell; 
} 
+0

было бы лучше загружать данные в ваш _model_ не в _view_, а когда _model_ готов, вы можете заполнить _view_ из вашего _model_ - как обычно это будет стандартный способ. – holex

ответ

0

Проблема заключается в том, что если ячейки будут использоваться повторно, предыдущее изображение может по-прежнему загружаться или устанавливаться. Вы можете переопределить изображение ячейки prepareForReuse на nil. Для асинхронной загрузки изображений вы должны проверить, не является ли объект модели ячейки таким же, как при загрузке, если нет, то не устанавливайте изображение по мере его появления слишком поздно.

+0

Здравствуйте, Мы попробовали ту же идею, о которой упоминается здесь, но, используя вашу идею, она не показывает никаких изображений, таких как старый или новый. Любое другое решение.? –