0

У меня есть 2 вида коллекции. Для первого представления коллекции я вижу только одну ячейку за раз, но для второго представления коллекции я вижу 8 ячеек за раз.2 Проблемы с UICollectionView с источником данных

Итак, для просмотра второй коллекции все работает нормально, но первый вид коллекции дублирует некоторые ячейки.

Если я использую этот код ниже, это вызывает некоторые проблемы с дублированными ячейками. Я не уверен, что ячейки дублируются, но каждая моя ячейка содержит изображение, отображающее изображение. Таким образом, изображения в этих ячейках дублируют 100% гарантию.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    GalleryCollectionViewCell *collectionViewCell = (GalleryCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"GalleryCollectionViewCell" forIndexPath:indexPath]; 

    NSDictionary *artwork = [self.artworks objectAtIndex:indexPath.item]; 

    [collectionViewCell loadImageWithURLString:artwork[@"image_url"]]; 

    return collectionViewCell; 
} 

У меня есть вид на обратный вызов выше и я добавил экземпляр моего первого представления коллекции, которая также вид сверху коллекции в моей SuperView иерархии. Теперь исходный код выглядит так:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([collectionView isEqual:self.collectionViewTop]) 
    { 
     GalleryCollectionViewCell *collectionViewCell = (GalleryCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"GalleryCollectionViewCell" forIndexPath:indexPath]; 

     NSDictionary *artwork = [self.artworks objectAtIndex:indexPath.item]; 

     [collectionViewCell loadImageWithURLString:artwork[@"image_url"]]; 

     return collectionViewCell; 
    } 
    else 
    { 
     GalleryCollectionViewCell *collectionViewCell = (GalleryCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"GalleryCollectionViewCell" forIndexPath:indexPath]; 

     NSDictionary *artwork = [self.artworks objectAtIndex:indexPath.item]; 

     [collectionViewCell loadImageWithURLString:artwork[@"image_url"]]; 

     return collectionViewCell; 
    } 
} 

Я не уверен, почему мне нужно проверить вид коллекции, но он работает прямо сейчас. Каждая ячейка отображает правильное содержимое. Таким образом, в первом представлении коллекции нет дублированных проблем.

В дополнение можно добавить код, как я настройка изображения:

- (void)loadImageWithURLString:(NSString *)urlString 
{ 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; 

     [self.theImageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"home_screen_logo"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 

      [self.theImageView setImage:image]; 

      [self.indicator stopAnimating]; 

      [self.indicator setHidden:YES]; 

     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

     }]; 
} 

Но я не знаю, почему мне нужно проверить вид сбора в обратный вызов, потому что на самом деле он делает то же самое, как для первого представления коллекции как для второго вида коллекции. Для загрузки изображения я использую функцию AFNetworking.

ответ

0

Звучит как проблема с ячейкой. Вы удаляете свой объектImageView в функции prepareForReuse вашего customCell?

-(void) prepareForReuse { 

    [super prepareForReuse]; 

    [self.theImageView removeFromSuperview]; 
    self.theImageView = nil; 

    [self.indicator removeFromSuperview]; 
    self.indicator = nil; 
} 

Я сделал четкий ответ об этой проблеме на другую должность: UICollectionView adding image to a cell

Я мог бы быть неправильно о природе вашей проблемы, хотя. Дай мне знать !

+0

Благодарим вас за ответ, я отключил autaolayout и классы размеров, и теперь все работает нормально. Я не знаю, как это влияет на него, но это вызывает много проблем в моем проекте, я имею в виду об авто макетах и ​​размерах классов –

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