XYを使用してカスタムを生成することにしました。UICollectionViewCell
(StoneCell
)を適切に初期化する方法に苦労しました。 Nibを使用せずにプログラムでUICollectionViewCellを初期化する方法
UICollectionView
コントローラに
[self.collectionView registerClass:[StoneCell class] forCellWithReuseIdentifier:@"stoneCell"];
:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGSize size = [MainScreen screen];
CGFloat width = size.width;
CGFloat item = (width*60)/320;
return CGSizeMake(item, item);
}
など。私StoneCell.m
で
、私は次のことを試してみました:
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
StoneCell* stone = [[StoneCell alloc] initWithFrame:frame];
self = stone;
}
return self;
}
が、無駄に。私がビルドして実行すると、私は墜ちますself = [super initWithFrame:frame];
フレームの値をチェックすると、正しく設定されているのは{{0,0},{70,70}}
で、これは6秒でなければなりません。しかしながら、オブジェクトstone
(ならびにself
と同様)は、ともにと報告されている。
明らかにこれは正しくないので、セルを適切に初期化する方法を知りたいと思っていました。
私はまた、適切にセルをデキューしています。そのために世話をしています
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
。
UICollectionViewCellからStoneCellを継承しましたか? – Miknash
はい、間違いはありません。 –
愚かな質問、あなたは正しくあなたのデータソースを設定し、CollectionViewのために適切に委任したことを確認しましたか?また、ストーリーボード上にプロトタイプセルを追加して、そのプロトタイプセルにStoneCellクラスであることを伝えれば、コレクションビューにプロトタイプセルを追加することもできます。 – Acludia