リンクされたxibでUICollectionViewCell
サブクラスを作成しようとしています。これを実行します。新しいxibファイルを作成し、UICollectionViewCell
を追加してから、これを作成します。サブクラスファイル:
@interface MyCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
また、ファイルオーナーカスタムクラスにインターフェイスビルダーのMyCell
クラスをリンクし、UILabel
を追加してから、UICollectionView
viewDidLoadに次のようにします。
[self.collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"MyCell"];
UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
これに加えて:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
cell.label.text = @"Cell Text";
return cell;
}
しかし、これは機能しません、私はこのエラーを受け取ります:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x907eca0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'
私は何を間違えましたか? UICollectionViewCell
サブクラスをxibに接続し、UICollectionView
で表示するにはどうすればよいですか?
編集:
私はこれをしました:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier = @"MyCell";
static BOOL nibMyCellloaded = NO;
if(!nibMyCellloaded)
{
UINib *nib = [UINib nibWithNibName:@"MyCell" bundle: nil];
[cv registerNib:nib forCellWithReuseIdentifier:identifier];
nibMyCellloaded = YES;
}
MyCell *cell = (MyCell*)[cv dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
cell.labelCell.text = @"Text";
return cell;
}
.xibファイルのセルがセルのタイプを知っていることを確認してください。
インターフェイスビルダーでセルを選択します
そして、アイデンティティインスペクターで
その後、ラベルをプロパティに関連付けます。 (あなたはすでにそれをしたと思う)
次に、cellForItemAtIndexPath:
メソッドに.xibファイルが既にロードされているかどうかを確認することをお勧めします
NSString *identifier = @"MyCell";
static BOOL nibMyCellloaded = NO;
if(!nibMyCellloaded)
{
UINib *nib = [UINib nibWithNibName:@"MyCell" bundle: nil];
[cv registerNib:nib forCellWithReuseIdentifier:identifier];
nibMyCellloaded = YES;
}
このドキュメントで答えを見つけることができます ICollectionCellを追加するUICollectionView 。
StoryBoard内のUICollectionViewのみが内部にUICollectionViewCellを持っています。 XIBを使用する場合は、CellName.xibで新しいXIBを作成し、それにCollectionViewCellを追加し、UICollectionViewカスタムクラスの名前を指定します。その後、registerNib.Sampleコードを使用します。 https://github.com/lequysang/TestCollectionViewWithXIB