2014-12-15 5 views
1

У меня есть следующие острия установки в Interface Builder, который содержит основной вид моей ViewController (с кодом UICollectionView) и многоразовые представления для заголовка и клетокUICollectionViewCell с Interface Builder

enter image description here

зарегистрироваться для многократного использования представлений в viewDidLoad

[self.calendarView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"dayCell"]; 
[self.calendarView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"dayCellDisabled"]; 
[self.calendarView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"monthHeader"]; 

Когда я пытаюсь получить доступ к моим меткам клеток, как это:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"dayCellDisabled" forIndexPath:indexPath];  
UILabel *dayLabel = (UILabel *)[cell viewWithTag:1]; 

результат dayLabel равен нулю, поэтому я не могу присвоить ему значение, и в моем представлении ничего не отображается. То же самое относится к моему многоразовому заголовку и его меткам Год и Месяц.

Что я здесь делаю неправильно?

ответ

3

Что я здесь делаю неправильно?

Несколько вещей:

  • зарегистрировав перо для повторного использования клеток требует, чтобы клетка является объектом верхнего уровня в том, что перо - вы не можете иметь перо мульти-контента, как это. Либо вытащить ячейку в отдельный наконечник, либо использовать раскадровку и прототипы
  • Регистрация класс для повторного использования ячеек подразумевает, что вы будете создавать содержимое ячейки в коде, что, я думаю, вы не делаете, учитывая приведенное выше. Зарегистрированный класс не знает этого файла nib.
  • Тэги - это почти все, что вам нужно - создайте подкласс и используйте точки доступа.
+0

Спасибо за предложение - я создал отдельные классы для ячеек и заголовка, и теперь он работает – artooras

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