1

UICollectionViewCell オブジェクトを持つ UILabel があります。

@interface TideDataTableCell : UICollectionViewCell

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

@end

ラベルは、セル オブジェクトの m ファイルに合成されます。ただし、テキスト プロパティを割り当てようとすると、ラベル オブジェクトは常に 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 のラベルがセル 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 に答える