UILabel не отображается в UICollectionView

У меня есть UILabel с объектом UICollectionViewCell.

@interface TideDataTableCell : UICollectionViewCell

@property (strong, nonatomic) NSString* dayString;
@property (weak, nonatomic) IBOutlet UILabel *dayLabel;

@end

Метка синтезируется в файле m для объекта ячейки. Однако, когда я пытаюсь назначить свойство text, объект метки всегда имеет значение null. Даже создание новой метки и присвоение ее ячейке dayLabel не работает! Приведенный ниже код - это просто прямое присвоение метке, поскольку ничего не работает...

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Main Tide Data Table Cell";

    TideDataTableCell* tideDayDataCell = [self.tideDataTable dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    tidalDate* tideDate = self.tidalDates[indexPath.row];
    self.tideDataTable.backgroundColor = [UIColor lightGrayColor];
    tideDayDataCell.backgroundColor = [UIColor whiteColor];
    tideDayDataCell.dayLabel.textColor = [UIColor blackColor];
    tideDayDataCell.dayLabel.text = tideDate.dateString;
    return tideDayDataCell;
}

Почему это не работает?! Я проверил, что метка в UICollectionViewCell связана с dayLabel в файле ячеек h (выше)


person HillInHarwich    schedule 03.12.2012    source источник
comment
Вы пытались сделать dayLabel сильным или сохранить? Возможно, он освобождается перед повторным использованием ячейки, поскольку это слабое свойство.   -  person Rahul Wakade    schedule 03.12.2012
comment
Привет... Я только что попытался сделать его сильным и сохранить, но он все еще не работает...   -  person HillInHarwich    schedule 03.12.2012
comment
ОК... Я добился некоторого прогресса... Должно быть, я сделал это раньше - я создал новую метку и присвоил ее свойству dayLabel. Ярлык, хотя он больше не нулевой, все равно не отображается в представлении uicollection.   -  person HillInHarwich    schedule 04.12.2012
comment
Все отсортировано - я следовал руководству и забыл закомментировать строку в viewDidLoad... Ух!   -  person HillInHarwich    schedule 04.12.2012


Ответы (1)


Вам нужно зарегистрировать свою ячейку в viewDidLoad TideDataTableCell следующим образом:

UINib *cellNibName = [UINib nibWithNibName:@"cellNibName" bundle:nil];
[self.collectionView registerNib:cellNibName forCellWithReuseIdentifier:@"cellIdentifier"];

Затем в cellForItemAtIndexPath вам нужно получить ячейку и использовать ее:

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"cellIdentifier";

    TideDataTableCell* tideDayDataCell = [self.tideDataTable dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

    tidalDate* tideDate = self.tidalDates[indexPath.row];
    self.tideDataTable.backgroundColor = [UIColor lightGrayColor];
    tideDayDataCell.backgroundColor = [UIColor whiteColor];
    tideDayDataCell.dayLabel.textColor = [UIColor blackColor];
    tideDayDataCell.dayLabel.text = tideDate.dateString;
    return tideDayDataCell;
}

Не забудьте установить идентификатор повторного использования в файле xib.

person mrodriguez    schedule 09.09.2014