2010-12-04 8 views
3

私はリモートAPIを非同期に検索し、iOSのUISearchDisplayControllerを使用してUIを表示するアプリケーションを持っています。はプログラムでUISearchDisplayControllerを使用します

保存された検索機能については、UISearchDisplayControllerをプログラムで使用して検索を開始し、以前の場所に戻すようにユーザーインターフェイスを設定しようとしていました。 (すなわち、私は検索バーを起動し、検索語を設定しようとしている。)

searchTableViewController.searchDisplayController.searchBar.text = mySearchTerm; 
//[...] 
[searchTableViewController.searchDisplayController setActive:YES animated:YES]; 
[searchTableViewController performSearch]; 

私はこれまで、上記のdoesn'tを試してみたコードは、トリックを行うように見えます。検索バーが正しく表示され、検索語が設定され、検索が実行されますが、システムはこれを有効な検索として認識していないようです。結果ビューで指を使ってキーボードを消すと、検索語が自動的にリセットされ、結果が消えます。

ex1 ex2

ヘルプは大歓迎します。ありがとう!

+0

http://stackoverflow.com/questions/8696260/creating-a-uisearchdisplaycontroller-programmatically – Hemang

答えて

0

同じ問題が発生しました。私はivarを作成してNSString * savedSearchString;を作成し、UISearchDisplayControllerのデリゲートに次のメソッドを追加して解決しました。 searchDisplayControllerWillBeginSearch:にラインcontroller.searchBar.text = savedSearchString;を追加

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 
{ 
    // saves search string for next search 
    [savedSearchString release]; 
    savedSearchString = [controller.searchBar.text retain]; 
    return; 
} 

- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller 
{ 
    // shows keyboard and gives text box in searchBar the focus 
    [controller.searchBar becomeFirstResponder]; 

    // shows previous search results 
    if ((savedSearchString)) 
     controller.searchBar.text = savedSearchString; 

    return; 
} 

は、検索語がしかし、結果テーブルが再ロードされない、UISearchBarに表示される原因となります。

前回の検索文字列がある場合、少し荒いです。荒い移行がないより優れた実装を見つけたら、私の答えを更新します。

関連する問題