私はカスタムUICollectionViewCellを実装しています。データを使用してセルのサブビューを初期化できるようにモデルデータを送信する方法を知りたいと思います。iOSサブクラスUICollectionViewCellカスタムの初期化メソッド
私が直面してる問題はときにセルのISN」である
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell* cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
...私は..
[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
と、次の方法で操作を実行して、私のMyCollectionViewCellを登録再利用キューの中で、initWithFrameメソッドを呼び出すことによって新しいセルを初期化します(ドキュメントが確認する必要があります)。しかし、私は私のMyCollectionViewCellクラス、カスタムのinitメソッドを持っている...
-(id) initWithFrame:(CGRect)frame withData: (NSDictionary*) data;
私は私のカスタムではなく、呼び出されるメソッドを初期化します。どうすればいい?私はニブを使用していないので、私はプログラムですべてをやっています。
方法がない場合、代わりにinitWithFrameメソッドを使用する必要があります。そのデータでサブビューを初期化できるように、モデルデータをMyCollectionViewCellに渡す方法はありますか?
ありがとうございます!
これです。セルを再利用する場合は、initWith ...何も渡さないので、データの設定はinitメソッドとは別に行う必要があります。 – jrturton
ただし、initDataとは呼ばないでください。 configureForDataまたはsetData(データがプロパティの場合)と何かを呼び出します。 init ...メソッドは、新しく割り当てられたオブジェクトに対してのみ呼び出されるべきです。 – jrturton
それは理にかなっています。 setDataを呼び出してモデルデータを渡した後、セルをトリガーしてUIをリロードするにはどうすればよいですか? setNeedsLayoutを呼び出し、カスタムセルに - (void)layoutSubviewsメソッドを持っていますか? –