1

UISearchDisplayControllerに検索クエリをプリロードするにはどうすればよいですか。現在、私は次のことを行っています。

    [self.searchDisplayController setActive: YES animated: YES];
    self.searchDisplayController.searchBar.hidden = NO;
    self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
    [self.searchDisplayController.searchBar becomeFirstResponder];

これは検索結果ウィンドウを表示し、テーブルも検索しますが、ユーザーが検索バーをクリックした場合のように、ナビゲーションバーに検索バーは表示されません。検索バーが表示されない場合は、検索が実行されたことをユーザーが明確に認識できない可能性があります。

検索バーを表示する方法はありますか?

4

2 に答える 2

0

それで、多くの総当たり攻撃の後、私はついに実行可能な解決策を見つけました。

これが私の設定です:2つのテーブルビュー(T1、T2)があります。T1のデータはローカルであり、T2はインターネットからデータをフェッチします。ユーザーがT1で検索し、結果がない場合、ユーザーはボタンをタップしてT2で同じ検索を実行できます。したがって、T2が起動すると、デフォルトでナビゲーションアイテムが表示されます。これは、変更できませんでした。

-[T2 viewDidAppear:]

    [self.searchDisplayController setActive: YES animated: NO];
    self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
    self.searchDisplayController.searchResultsTableView.hidden = YES; // so that we don't see "no results"

T2のデータの準備ができたら:

[self.tableView reloadData];
self.searchDisplayController.searchBar.text = self.searchDisplayController.searchBar.text; // to reload search
self.searchDisplayController.searchResultsTableView.hidden = NO;

うまくいけば、これは誰かを助けます。最初にナビゲーションバーを非表示にする方法を理解できれば、それで残りの問題は解決します。

于 2012-11-07T11:47:45.327 に答える
0

ユーザーが検索をクリックして文字列が空になったら、searchBartextを「\n」のキャリッジリターンに変更します。

self.searchDisplayController.searchBar.text = @"\n";

キャリッジリターンは検索バーに表示されず、ユーザーが「\n」と入力した場合と同じ文字列にはなりません。だからそれはうまくいきます。の中に

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 

メソッドでは、検索バーのテキストを@""に戻すことができます。検索文字列が@"\n"の場合

self.searchDisplayController.searchBar.text = @"";

それが私のために働いたものです!

于 2014-01-25T00:34:18.223 に答える