わかりました、動的コンテンツを(Webから)UITableViewにロードすることと、セルの高さを事前に計算することに関する問題について、たくさんの小片を読みました。さまざまな単純な実装を試しましたが、問題は解決しません...
Web から JSON ファイルを読み取り、それを「アイテム」オブジェクトに解析する必要があると仮定すると、それぞれに可変サイズの画像とさまざまなテキスト ラベルが含まれます。読み込んでいます:
- アプリの読み込み時に JSON ファイルを読み取り、項目配列に解析します
- 項目配列のごく一部 (約 10 項目) のみを tableview に提供します。セルの高さを計算するには、各項目に関連付けられた画像を読み込む必要があるためです。 images - これにより、すべての画像が読み込まれるまでアプリがハングします
- 使用可能なセルを含むテーブルビューを表示します (いくつかの「予備の」セルをロードすると仮定すると、ユーザーはより多くの項目にスクロールすることもできます)
- Grand Central Dispatch を使用してバックグラウンドで残りのアイテムのすべてまたは一部の画像をダウンロードし、新しいデータでテーブルビューをリロードします (アイテム リストが非常に長い場合は、手順 4 を繰り返します)。
最初に画像を読み込まないとセルの高さを計算する方法がないため、上記の手順 2 が必要です。tableview は最初にすべてのセルの高さを計算するため、すべてのアイテムのすべての画像をダウンロードするには非常に長い時間がかかる場合があります。
これが正しいアプローチだと思いますか?私は何かを逃していますか?