2012-04-30 6 views
0

24ページのUIPageControlがあります。各ページにはUITableViewがあります。ユーザーは、画面の上部にあるボタンを押してデータをリフレッシュすることができます(全24ページ)。UIPageControlのパフォーマンスに関する問題を伴うカスタムUIScrollview

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

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

これは、比較的多数のページを持つUIPageControl状況での正しいアプローチか、UIPageControlを誤って使用しているか、ページを更新するために間違った方法を使用しているかなどです。

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

ありがとうございました。

答えて

0

あなたが何を記述しているのがベストプラクティスかは分かりませんが、私はあなたが何をしているのかを知っていて、実行可能な解決策を考え出していると仮定します。 。

あなたのコメント/質問に基づいて、私は確信していませんでしたが、データを怠け者の方法で動的に読み込むようにしようとしているようです。そのような場合、私はおそらく追加する少しを持っていますが、ここではいくつかのアイデアです:アップルUIPageControlの例では

  1. 、各時間はUIScrollViewのデリゲートは、そのscrollViewDidScroll:メソッドを呼び出して、彼らは現在のページをロードし、以前のページと次のページ(もちろん、前/次が存在しない最初と最後のページの場合の処理​​)おそらく、この方法で[tableView reloadData]と呼ぶことができます。

  2. ページが読み込まれるたびに24個すべてを読み込む必要がある場合は、すぐに[tableView reloadData]に電話してから、他のページを繰り返して1ページずつデータを読み込み、次。

数字1は、データをより迅速に準備するためのエレガントな方法のようです。
2番は非常にクールジーなハックのような感じなので、1番の番号が機能するかどうかを実際に確認しようとしています。

+0

答えてくれてありがとう、ありがとう。私はまだ適切な方法であることを確認することなく、現在の "解決策"(つまりすべてをロード)が最善の方法ではないことを確認せずに遅延ロードを実装していません。思いやりのある答えに感謝します。 – Bknee

+0

お手伝いします!私はそれがあなたのために働くことを望む! – mbm29414

0

同じ期間に24ページを読み込まないでください。ユーザーは一度に1ページだけを表示するため、すべてのページを一度に読み込むだけでリソースが無駄になります。ユーザーが現在いるページを検出し、そのページのみをリロードする必要があります。 UIPageControlを使用してページを切り替える場合は、代理人にイベントを聞かせてください。

UIControlEventValueChanged 

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

+0

ご回答いただきありがとうございます。 mbm30075のように、あなたは正しいと私は応答を感謝します。 – Bknee

関連する問題