7

さまざまなカスタムセルを含むコレクションビューがあります。

これらのセルには、サイズが異なるさまざまなコンテンツが含まれています。

セルはストーリーボードで定義されているため、コードで登録する必要はありません。

私が今やりたいのは、コンテンツに応じてデリゲートメソッドのサイズを変更することだけです。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

id cellAtIndexPath = [collectionView cellForItemAtIndexPath:indexPath];

NSLog(@"The cell: %@", cellAtIndexPath);

...
e.g. calling sizeToFit methods and cumulating the sizes of the cells' subviews
...

}

メソッドはすべてのセルに対して期待どおりに呼び出されますが、cellAtIndexPathは、何を試しても常にNULLを返します。そのため、indexPathまたはそのコンテンツビューでセルオブジェクトにアクセスできません。

セルオブジェクトにアクセスできない理由はありますか?

4

1 に答える 1

11

このcollectionView:layout:sizeForItemAtIndexPathメソッドは、コレクション ビューのフロー レイアウト オブジェクトによって呼び出されます。レイアウトは、セルがコレクション ビューに追加される前に一度にセルのサイズを要求しています。必要なセル サイズを「自分で」計算して返す必要があります。

于 2012-11-05T20:41:07.867 に答える