UIImageView в ячейках UICollectionView не отображается

Я очень новичок в разработке iOS, извините за публикацию такой основной ошибки, я просто не могу понять это.

Я расскажу вам, что я сделал до сих пор, надеюсь, кто-то может мне помочь здесь. Я пока не редактировал код.

  1. Добавьте контроллер представления коллекции (щелкните и перетащите в main.storyboard)
  2. Настройте размеры ячеек в редакторе атрибутов CollectionView.
  3. Перетащите объект UIImageView в каждую ячейку.
  4. Импортируйте мои изображения в проект (перетащите изображения на боковую панель и импортируйте)
  5. Выберите каждый UIImageView и в атрибутах выберите правильное изображение.

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

Скриншот редактора, Скриншот симулятора


person jellyberg    schedule 16.07.2014    source источник
comment
Вы уверены, что используете статические, а не динамические ячейки? Ваш контроллер не должен реализовывать методы сбора источников данных.   -  person Szu    schedule 16.07.2014


Ответы (2)


Вы должны добавить метод источника данных после создания класса контроллера представления коллекции,

// Defines the number of cells in a section of collection view
- (NSInteger)collectionView:(UICollectionView *)cv numberOfItemsInSection:(NSInteger)section;
{
    return numberOfItems;
}

// Defines the cells in the collection view
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
{
// Gallerycell is the custom collection view cell class holds the UIImage View
    GalleryCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"GalleryCell" forIndexPath:indexPath];
// getting the image 
    cell.cellImage.image = [UIImage imageNamed:[dataSourceArray objectAtIndex:indexPath.row]];
    return cell;
}
person Alex Andrews    schedule 16.07.2014
comment
Спасибо за помощь. Однако я не совсем понимаю - создать новый класс, который является подклассом контроллера представления коллекции, а затем поместить ваш код в его файл .m? И нужно ли мне также создавать класс для GalleryCell? - person jellyberg; 16.07.2014
comment
Да, вы правы.. И в ячейке галереи добавьте IBOutlet для просмотра изображения и соедините его с вашим представлением изображения в ячейке представления коллекции. Установите это изображение в методе cellForItemAtIndexPath, как указано выше. - person Alex Andrews; 16.07.2014
comment
ОК, я реализовал, как вы предложили, но выдает ошибку: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier XYZGalleryCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard' - person jellyberg; 16.07.2014
comment
Добавьте идентификатор ячейки в раскадровку или nib, такой же, как идентификатор, указанный в cellForItemAtIndexPath, т.е. GalleryCell, проверьте эту ссылку i. imgur.com/TAIROri.png - person Alex Andrews; 16.07.2014

Вы должны реализовать методы источника данных для отображения ячейки. Не измеряет статические или динамические ячейки.

person Anton    schedule 16.07.2014