2017-02-06 4 views
0

dequeueReusableCellと反対の方法はありますか?私はセルの高さの計算のためにセルをデキューしています。そして、セルの高さを計算した後、そのセルをリサイクルして、表示に再利用できるようにしたいと思います。UITableViewCellを手動でリサイクル

セルタイプごとにオブジェクトをインスタンス化し、プロパティに格納して代わりに使用する必要がありますか?

+0

セルをデキューする他の方法はありません。 –

+0

あなたが正しくなるようにするには:UITableViewからセルをデキューして設定し、高さを計算してからそれを放棄しますか?あるいは 'cellForRow'(内部的に' dequeue ... 'を呼び出す)を呼び、高さを計算してからそれを投げますか?そして、それを投げるのではなく、あなたがテーブルを再利用することを望みます(次回に 'dequeueReusableCell'を呼び出すと、そのうちの1つを取り戻すでしょうか?) –

+0

@AndreasOetjen' dequeueReusableCell(withIdentifier: "xyz") ' – shelll

答えて

0

これはまだiOS 10では不可能です。これが今後利用可能になる場合は、回答を更新します。

0

独自のスタック/キューを作成し、手動でデキューするすべてのセル(たとえば、cellForRow..以外)をこのキューに入れることができます。

cellForRow...メソッドの中では、最初にテーブルビューデキューメソッドを使用し、nilを返す場合は、独自のキューを使用して再利用可能なセルを取得します。それらのどれも何も返さない場合にのみ、新しいセルを作成します。

テーブルビューのデキューメソッドは、以前に作成したセルだけを返します。cellForRow

+0

驚くべきことに、私はcellId - > cellという辞書で終わり、コンストラクタ内のすべてのidに対して1つのセルをインスタンス化します。セルのリサイクルに独自のフローを追加することは、地獄への道です... – shelll

+0

どの 'デキュー ' - あなたが呼ぶメソッド、それはcreあなたのために1つを食べました。それにもかかわらず、高さを計算するために、セルを作成するためにこのような方法でアプリケーションを実装するのは一般的ではありません。 –

+0

'indexPath'を持たない' dequeue'メソッドは、古いiOSバージョンでは作成していないので、セルを作成すべきではありません。現在、両方の 'dequeue'メソッドは、私の場合、iOS 10では無限の値を返します。動的高さセルは一般的にiOSの大きな苦痛です。自動高さの計算は間違っていて、速度が遅く、推定される高さはさらに大きくなります(正確なスクロール値が必要な場合や、場合によってはジャンプを引き起こします)。唯一の堅牢な方法は、実際のセルで高さを計算してから値をキャッシュすることです。そして、あなたは一度に動的な高さで10-20個以上の細胞を挿入することはできません... – shelll

関連する問題