1

我有一个带有 UICollectionViewCell 对象的 UILabel。

@interface TideDataTableCell : UICollectionViewCell

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

@end

标签在单元对象的 m 文件中合成。但是,当我尝试分配 text 属性时,标签对象始终为空。即使创建一个新标签并将其分配给单元格 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 中的标签是否连接到单元格 h 文件中的 dayLabel(上图)

4

1 回答 1

0

您需要像这样在 TideDataTableCell 的 viewDidLoad 上注册您的单元格:

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 文件中设置重用标识符。

于 2014-09-09T11:02:07.450 回答