2

ストーリーボード以外のiPadプロジェクトでUICollectionReusableViewをサブクラス化しようとしています。IBでビューを作成し、それをカスタムクラスに接続し、コレクションビューが存在するviewControllerで再利用するためにクラスを登録し、で正しく呼び出しています。

UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath

ただし、UICollectionViewのヘッダー領域には何も表示されません。私はコーダーでビューを初期化する必要があると思いますが、それを正しく行う方法がわかりません。見つけたいくつかの例に従いましたが、ヘッダービューがコレクションビューに表示されません。

- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
    [[NSBundle mainBundle] loadNibNamed:@"CVHeaderView" owner:self options:nil];
    [self addSubview:self.categoryNameLabel];
}
return self;

}

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

8

ストーリーボードを使用してヘッダー/フッターを選択すると、チェックマークinitWithCoder:が呼び出されます。

ストーリーボードを使用しない(またはヘッダー/フッターをクリックしない)が手動で接続する場合は、カスタムクラスを登録する必要がinitWithFrame:あり、呼び出されます。

[self.collectionView registerClass:[GameCardCell class] forCellWithReuseIdentifier:@"GameCardCell"];
[self.collectionView registerClass:[PlayerHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PlayerHeaderView"];
[self.collectionView registerClass:[PlayerFooterView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"PlayerFooterView"];

注:両方とも1回だけ呼び出されます。ビューがキャッシュから出てくると、prepareForReuseが呼び出されます。

于 2013-03-26T10:00:14.867 に答える
4

私の場合、initWithFrame:初めてデキューするときに自動的に呼び出されます。このメソッドを実装して、機能するかどうかを確認してください。

于 2012-11-02T08:09:17.147 に答える