subView в UICollectionViewCell отображается неправильно при прокрутке UICollectionView

Я UICollectionViewCell пользовательский UICollectionViewCell и добавляю subView в contentView:

BooksCell.h

 @interface BooksCell : UICollectionViewCell @property (strong, nonatomic) UIImageView *certifyImageView; @end 

BooksCell.m

 - (id)initWithFrame:(CGRect)frame { self= [super initWithFrame:frame]; if(self){ _coverImageView = [[UIImageView alloc] initWithFrame:CGRectMake(15, 15, 88, 117)]; _coverImageView.userInteractionEnabled = YES; [self.contentView addSubview:_coverImageView]; UIImage *certifyImage = [UIImage imageNamed:@"13-6.png"]; _certifyImageView = [[UIImageView alloc] initWithFrame:CGRectMake(17.5, _coverImageView.frame.size.height-3, certifyImage.size.width, certifyImage.size.height)]; _certifyImageView.image = certifyImage; _certifyImageView.hidden = YES; } return self; } 

ViewController

 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ BooksCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"BooksCell" forIndexPath:indexPath]; cell.coverImageView.image = [UIImage imageNamed:@"13-5.png"]; // **Here I want some cell display certifyImageView and some not.** if(indexPath.row%2==0){ cell.certifyImageView.hidden = NO; } return cell; } 

Я добавляю collectionView как subView в Viewcontroller и правильно устанавливаю его, теперь коллекцияView перемещает coverImageView и certifyImageView в обычном режиме, но когда я просматриваю collectionView, certifyImageView перемещается в неправильную ячейку, я предполагаю, что это может быть вызвано Reuse Cell и как его подобрать?

One Solution collect form web for “subView в UICollectionViewCell отображается неправильно при прокрутке UICollectionView”

Я думаю, потому что он повторно использует ячейку, которая уже установила certifyImageView.hidden в NO, поэтому вам нужно вернуть ее в YES. Возможно, попробуйте это

 if(indexPath.row%2==0){ cell.certifyImageView.hidden = NO; } else{ cell.certifyImageView.hidden = YES; } 

Таким образом вы убедитесь, что certifyImageView будет скрытым, если это то, что вы хотите.

  • UICollectionView обновляет одну ячейку
  • Изменение фона ячейки UICollectionView
  • Swift - не может деактивировать вид вида: UICollectionElementKindCell с идентификатором
  • Как я могу получить доступ к конкретному экземпляру верхнего или нижнего колонтитула в UICollectionView?
  • Тень не отображается в ячейке iOS
  • как перерисовать невидимые UICollectionViewCell после вращения, готовые для повторного использования?
  • UIImageView в пользовательском UICollectionViewCell постоянно возвращает nil
  • Как получить доступ к IBOutlets UICollectionViewCell от UIViewController?
  • pre select / highlight UICollectionViewCell при первой загрузке представления
  • Сделать UICollectionViewCell в центре UICollectionView
  • Быстрая прокрутка UICollectionView отображает неправильные изображения в ячейке, когда новые элементы добавляются асинхронно
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.