4

独自のカスタムUICollectionViewCell実装を定義して、UICollectionView. これが私がやったことです。

1- ストーリーボードを使用しています。

2-UICollectionView絵コンテのシーンである別のビューに を追加しました。

3-シーンのコントローラーにコレクションの と を指定しましたdatasourcedelegate

4-コントローラーで必要なメソッドの実装を提供しました。

5-セルビュー.h.mファイルを作成しました。私がする.hファイルで

@interface HscCellView : UICollectionViewCell

6- 新しいビューを作成したので、新しいキャンバスを取得し、右側の適切なセクションでクラス名を指定し (手順 5 と同じ)、一意の識別子を指定しました。
7- シーンのコントローラーで、.h ファイルに、ドラッグしたコレクション ビューへのアウトレットを定義しました。

@property (nonatomic, strong) IBOutlet UICollectionView *holesCollectionView;

そしてviewDidLoad私はそうします

[self.holesCollectionView registerClass:[HscCellView class] forCellWithReuseIdentifier:@"cellView"];

cellViewは、カスタム セル xib に指定した一意の識別子であることに注意してください。

8-最後に、実装しました

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    HscCellView *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellView" forIndexPath:indexPath];

    return cell;

}

アプリを起動すると、一連のセル ビュー (メッセージで 9 を指定したため 9 numberOfItemsInSection) が表示されますが、それらはカスタム セル ビューではありません。サイズ、色、ラベルはありません。エラーはありません。私は立ち往生しています。

いくつかの補助的な質問。

  • いつ nib を登録し、いつクラス名を登録しますか? 私はそれが両方の方法で行われるのを見てきましたが、ほとんどの場合、ペン先とクラス定義コードの両方で終わるようです。それは本当ですか?.

  • 手順 6 で、カスタム セル ビューのキャンバスで一意の ID を指定すると、クラスを に登録する必要がないということviewDidLoadですか?

4

1 に答える 1

11

わかった、と思う。私はそれを説明しようとしますが、間違っている場合は修正されることを願っています。これは他の人にも役立つと思います。私の質問からのコメントに基づいて、クラスのインスタンスが実際にロードされていると判断しました。ただし、xib は無視されていました。これは、クラスがロードされている間、xib が使用されていなかったことを意味します。したがって、質問のステップ 7 では、

UINib *nib = [UINib nibWithNibName:@"HscCellView" bundle:nil];
    [self.holesCollectionView registerNib:nib forCellWithReuseIdentifier:@"cellView"];

クラスを登録する代わりに、今ではうまくいっているように見えます。

xibをカスタムクラスにリンクしたので、これが必要な理由についてちょっと興味がありますが、もう行き詰まっていません。

于 2013-01-14T14:47:19.190 に答える