2015-12-28 10 views
0

У меня есть собственный TagCollectionViewCell, который является обычным UICollectionViewCell. В .xib дни я использовал для создания экземпляра через UINib, но теперь, используя Storyboard, я не знаю.Проблема с CollectionViewCell. От .xib к переходу на раскадровку для пользовательского набора коллекции

\t UINib *cellNib = [UINib nibWithNibName:@"TagCollectionViewCell" bundle:nil]; 
 
\t [self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"TagCell"]; 
 
\t 
 
\t 
 
\t _sizingCell = [[cellNib instantiateWithOwner:nil options:nil] objectAtIndex:0];

В раскадровке я вставил перо в .storyboard, дал ему назначенный пользовательский класс. Но я получаю белый экран. Это моя специальная коллекция, в которой я хочу, чтобы она была раскадрой. .xib snapshot to be changed into the storyboard.

Какие изменения следует делать в представлении коллекции cell_for_item_atindexpath. Код для .xib был следующим.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
 
{ 
 
\t TagCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"TagCell" forIndexPath:indexPath]; 
 
\t 
 
\t [self _configureCell:cell forIndexPath:indexPath]; 
 
\t 
 
\t return cell; 
 
}

и для настройки макета было это.

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
 
{ 
 
\t [self _configureCell:_sizingCell forIndexPath:indexPath]; 
 
\t 
 
\t return [_sizingCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
 
}

+0

Привет. См. Мой ответ ниже – LearneriOS

ответ

2

Вы также можете использовать пользовательскую коллекцию для просмотра с раскадрой.

Сделать подкласс UICollectionViewCell.

Установить DataSource и делегировать.

Задайте класс и идентификатор в раскадровке, как показано на рисунке.

enter image description here

enter image description here

+0

Да, я сделал это. Я что-то пропустил в cellForItemAtIndexPath. Будет ли другое при использовании раскадровки. Рассмотрим ** «dequeueReusableCellWithReuseIdentifier» **, я предоставил идентификатор, используемый в раскадровке, я сделал это, что-нибудь еще, что мне не хватает. –

+0

Я понял! Мне нужно привести его в тип (TagCollectionViewCell *) –

0

Вы установите источник данных и делегат для вашего CollectionView. Одна из самых распространенных ошибок. Скажите, нужна ли дополнительная помощь.

+0

Да, как я могу это забыть. –