0

24 ページの UIPageControl があります。各ページには UITableView があります。ユーザーは、画面の上部にあるボタンを押して、データ (24 ページすべて) を更新できます。

すべてのページで reloadData を呼び出すと 3 秒の遅延が発生しますが、データは更新され、UIPageControl をスクロールして新しいデータを表示できます。現在のページで reloadData を呼び出すと高速ですが、問題のページのみが更新されます。ユーザーが次のページに移動すると、データが古い/間違っています。

私の「修正」は、ユーザーが一度に 1 つずつページにスクロールする直前にページで reloadData を呼び出し、どのページが新鮮でどのページがそうでないかを追跡するシステムを実装することです。

これは、ページ数が比較的多いUIPageControlの状況で正しいアプローチですか、それともUIPageControlを誤用しているか、ページを更新するために間違った方法を使用しているか、または何か他のものです。

このパフォーマンスの問題を解決するためのアドバイスをいただき、誠にありがとうございます。

ありがとう。

4

2 に答える 2

0

同時に 24 ページをロードしないでください。ユーザーには一度に 1 つのページしか表示されないため、すべてのページを一度にロードすることはリソースを浪費するだけです。ユーザーが現在表示しているページを検出し、そのページのみをリロードする必要があります。UIPageControl に依存してページを切り替える場合は、デリゲートにイベントをリッスンさせます。

 UIControlEventValueChanged 

次のページをロードします。UIScrollView を使用している場合は、デリゲート メソッドを使用して変更を検出し、適切なページをリロードすることもできます。

于 2012-04-30T01:49:51.337 に答える
0

あなたが説明していることがベストプラクティスであるかどうかはわかりませんが、あなたが何をしているのかを知っていて、実行可能な解決策を見つけたと仮定します (ここにいるすべての人が想定しているわけではありません)。

あなたのコメント/質問に基づいてよくわかりませんでしたが、怠惰な方法で動的にデータをロードするだけの努力をすでに試みているようです。その場合、追加することはほとんどありませんが、いくつかのアイデアを次に示します。

  1. Apple UIPageControl の例では、UIScrollView デリゲートがそのメソッドを呼び出すたびにscrollViewDidScroll:、現在のページ、前のページ、および次のページが読み込まれます (もちろん、前/次が存在しない可能性がある最初と最後のページのケースを処理します)。おそらく、このメソッドで[tableView reloadData].

  2. ページをロードするたびに 24 個すべてをロードする必要がある場合は、[tableView reloadData]すぐに呼び出してから他のページを反復処理し、一度に 1 つずつデータをリロードし、1 つのページが完了するのを待ってから次のページをロードすることができます。

番号 1 は、データをより迅速に準備するための洗練された方法のように思えます。
2 番は非常に厄介なハックのように感じるので、1 番が機能するかどうかを実際に試してみます。

于 2012-04-30T01:51:37.687 に答える