2011-03-07 13 views
1

私のアプリでテーブルビューを持っています...このリストビューの内容は、ext APIの動的検索に基づいて表示されます...cellForRowAtIndexPathはいつ呼び出されますか?

私は検索バーに "G" と入力した場合、私は今、それは意志のみ表示GC1、GC2、GC3 ..

I GCに変更した場合、それは

...、GA、GB、GC1、GC2、GC3を表示します。

私の質問は、ユーザーが検索結果として入力したものと同期していることを確認する方法です。リストビューでGC1をクリックすると、GC1の詳細などではなく、他のもの..

また、ユーザーが検索バーに入力するたびに配列を更新できるようにcellForRowAtIndexPathが呼び出されたのはいつですか?

答えて

1

filterContentForSearchText: scope:メソッドでフィルターされたアイテムの配列を更新する必要があります。ユーザーが検索バーに入力するときに呼び出されるもう1つの方法、searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchStringがあります。このメソッドからYESを返すと、テーブルがリロードされ、cellForRowAtIndexPath:が呼び出されます。

+0

例を挙げてください。 – testndtv

+0

これは完全にあなたのフィルタリングの方法とあなたの結果を格納するために使用しているに依存します...しかし、filterContentForSearchTextで再フィルタリング。それは正常に動作するはずです...もしあなたがより多くの問題を抱えているなら、あなたのコードを投稿し、何が動作しないのかを指定してください。 – GendoIkari

3

-cellForRowAtIndexPath:テーブルが再描画されたときや、ユーザーが少しスクロールしたために新しいセルが必要なときなど、セルを表示したいときはいつでも、テーブルによって送信されます。

'table'がテーブルへのポインタの場合は、[table reloadData]を呼び出してテーブルの内容を強制的に更新することができます。

+0

もし私が手動でcellForRowAtIndexPathを呼び出す必要があれば、実際に[table reloadData] と言う必要がありますか? – testndtv

+0

-cellForRowAtIndexPathを呼び出すべきではありません:あなた自身 - テーブルは必要に応じてテーブルを呼び出します。しかし、ユーザーが検索語を変更するなど、テーブルの内容が変更された場合は、テーブルの-reloadDataを呼び出してテーブルに新しいセルセットをロードするように要求する必要があります。 – Caleb

+2

彼がsearchBarとsearchDisplayControllerを使用している場合、reloadData ... shouldReloadTableForSearchStringを呼び出す必要はありません:彼のためにそれを処理します。 – GendoIkari

関連する問題