質問
私はiOSアプリケーションを開発しており、問題へのアプローチ方法を決定するいくつかの問題があります。
同じデータの異なるビューを表示するために、2つのuitableviewcontrollersを使用しています。 1つはマスターリストであり、もう1つは「お気に入り」としてマークされたアイテムのみが含まれています。また、アイテムはさまざまな高さであるため、各アイテムの高さを示すために「heightForRowAtIndexpath」を使用しています。問題は速度です。あるビューから別のビューに切り替えると、他のビュー(マークされたお気に入り/unfavourite)で行われた変更を表示するために更新する必要があります。
ソリューション#1:
テーブルビューが表示されるたびにデータをリロードします。データは怠zyな読み込みを使用して表示されますが、「heightForRowAtIndexpath」がデータがロードされ、その遅い前にすべてのアイテムに対して呼び出されるため、これはうまく機能しません。私のiPhone 4では、高さの値がキャッシュされていても、約300個のアイテムのリストがロードに約4秒かかります(ボトルネックが高さを適用し、取得しないでください)。
ソリューション#2:
変更が行われたときにテーブルを手動で操作します。私はこれを試したことはありませんが、おそらくバギーになるでしょう。あなたの考え?
ソリューション#3:
通知タイプシステムを使用して、現在ロードされている可能性のあるアイテムに更新の他のテーブルに通知します。私はこれを試していません。なぜなら、それは上に見えて、まったく機能しないかもしれないからです。
同じデータの2つのビューを表示する簡単な方法を知っている人はいますか?
正しい解決策はありません
他のヒント
reloadrowsatindexpaths:witrowanimationでnowをリロードできます。私はそれをしたことはありませんが、それがより速いのでそこにあると思いますので、あなたはそれを試してみたいと思うかもしれません。
高さの瞬間:Thingy、私はAppleドキュメントで、その機能が実際にパフォーマンスのキラーであることを読んだことを覚えています。おそらく、行の最大高さを取って、それをuitableview.rowheightで設定することができますか?