0

私はこの質問が何百回も前に尋ねられたことを知っていますが、それは実際には解決されていません(または少なくとも私が望む方法で)。かなり複雑なUITableViewCellの設定があります。はcell.backgroundView、かなりの量のCoreGraphicsとCoreTextを使用するUIViewサブクラスからロードされます。コードにはCTFramesetterSuggestFrameSizeWithConstraintsがたくさんあるので、メソッドでクラスを複製することをお勧めしheightForRowAtIndexPathます。

indexPathをキー、高さを値としてNSMutableDictionaryを作成することで、これを解決できると思います。しかし、それから私はheightForRowAtIndexPath最初に呼ばれるという問題に直面しています。セルの高さを推測し、セルのUIViewサブクラスのレンダリングが終了したら、委任を使用してセルの高さを設定することで、この問題を解決できると思います。

しかし、これは私に問題を残します、どうやってこれを委任するのですか?また、スクロールが極端に途切れるのを防ぐにはどうすればよいですか?セルが作成され、一瞬でサイズ変更されるためです。

4

1 に答える 1

1

過去に、私はダミーセルを使用しました。-fillInCell:forRowAtIndexPath:データをセルに入れる別の方法があります。そうすれば、のダミーセル-tableView:heightForRowAtIndexPath:との実セルに入力でき-tableView:cellForRowAtIndexPath:ます。

これがうまくいかない場合は、他のオプションがあります。

最初に頭に浮かぶのは、の-tableView:heightForRowAtIndexPath:代わりに実際のセルを作成することです-tableView:cellForRowAtIndexPath:。完成したセルを可変辞書に保存できます。-tableView:cellForRowAtIndexPath:完成したセルを辞書からプルするだけです。辞書を空にできるように、スクロールが停止したことも検出する必要があります(呼び出されたからといって、同じindexPath-tableView:heightForRowAtIndexPath:が呼び出されるわけではありません)。-tableView:cellForRowAtIndexPath:

お役に立てば幸いです。

于 2012-12-28T14:48:41.077 に答える