2011-08-31 11 views
3

私は不動産アプリを開発中です。アプリは、ユーザがフォーム(最小の部屋、価格など)を入力した後にデータフィードサーバを照会し、特定のキー/値のペア(プロパティ名、プロパティアドレス、経度/緯度、価格など)を持つjson文字列を取得します。 )。UITableViewでページングする最善の方法

私がやっているのは、フィードにユーザーのiphoneがオーバーロードされずにアイテムの長いリストが含まれていても、ユーザーがUITableViewのリストを参照できるようにすることです(返されたアイテムの数はクエリアプリケーションがこれを処理する必要があるので)...あなたは私にページングを提案しますか?事前に

Thxを、

ステファン

+1

最適な実装に役立つだろういくつかの他のためのものであってもよいが見つかりました:http://www.lwxted.com/blog/2012/smart-data-loading-table-views/ – Firdous

答えて

11

あなたtableView:cellForRowAtIndexPath:方法は、(あなたがtableView:heightForRowAtIndexPath:を使用していない、またはそれは非常に高速です)dequeueReusableCellWithIdentifier:を使用して、正しく書かれている場合は、のUITableViewは、デバイスに過負荷をかけることなく、数千行を処理することができるはずです。生データの保存に心配するだけで済みます。

問合せが完了するまで行数が分からないという問題は、回避するだけで十分です。クエリからさらに多くの行を受け取ると、UITableViewのinsertRowsAtIndexPaths:withRowAnimation:を使用して、より多くの行が利用可能であることをテーブルビューに通知します(tableView:numberOfRowsInSection:およびtableView:cellForRowAtIndexPath:にこれらの新しい行が反映されることを確認してください)。

クエリを続行する前にユーザーが現在のリストの最後までスクロールするまで待つ場合は、UITableViewがUIScrollViewのサブクラスであり、UITableViewDelegateがUIScrollViewDelegateを実装することに注意してください。 UITableViewDelegateでscrollViewDidScroll:を使用して、ユーザーがスクロールしたときを知り、テーブルビューのcontentOffsetを確認して、さらに多くのデータをロードするのに十分な範囲でスクロールしたかどうかを判断してください。まあ

0

いただきました人々が持つことができるアイテムの平均数? 10,100,1000?画像やデータだけがありますか?一般的に、私はページングをしないことに投票します。スクロールしていくうちにさらに読み込んで、あまりにも多くない場合は最初にすべてを読み込もうとします。デバイス上にキャッシュすることもできますし、「リフレッシュする」機能を追加することもできます。これにより、オフラインの操作性を向上させることができます。

+0

ウェブページ上に表示され、セルに表示される画像がある場合、ページあたり10個のアイテムが表示されます – Steve

+0

合計はいくつですか? – TommyG

+0

私は事前に合計のリストを知っていると述べた。たとえば、特定の検索では110個のアイテムがあり、「ページ」あたり10個のアイテムが表示され、11個の「ページ」には – Steve

関連する問題