web-dev-qa-db-ja.com

UISearchBarでプログラムで検索を強制するにはどうすればよいですか?

UISearchBarに(検索ボタンを押すなどの)新しい検索を自動的に開始させるにはどうすればよいですか?これを達成する簡単な方法はありますか?

21
nja

UISearchViewControllerが自動的に検索を実行するようにプログラムで検索フィールドの値を変更する前に、UISearchViewControllerをアクティブに設定する必要があることがわかりました。

// Need to set the searchDisplayController to active to 
// make the changes in search text trigger a search.
self.searchDisplayController.active = YES;
self.searchDisplayController.searchBar.text = @"New search string";

Swift 4

self.searchController.isActive = true
self.searchController.searchBar.text = "New search string"
19
Robban

検索入力フィールドを最初の応答者にするだけです。

[self.searchInputField becomeFirstResponder];
5
Pascal

SearchBarを強制することができます。

Objective C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString];

Swift 3.0:

self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)

これにより、searchBarがトリガーされます。

3
Saravanan B

必要なテキストが検索バー内にあることを確認した後、このUISearchBarDelegateメソッドself.searchBarSearchButtonClicked(searchBar)を既に実装していると仮定して、searchBarSearchButtonClicked(_ searchBar: UISearchBar)(検索バーを渡す)を呼び出すことができます。

1

はい、UISearchbarDelegatesearchBarSearchButtonClicked:を暗黙的に呼び出すだけです。このデリゲートの詳細については、 公式ドキュメント を参照してください。

1
tiguero

ばかげているように見えますが、機能するので、ばかげていません;)

NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;
0
JeanChRocha

デリゲートオブジェクトを取得できませんが、searchBar自体を取得できます。このコードは機能します。

let searchBar: UISearchBar = 
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""
0
hstdt

これはうまくいきました-Swift 4

   searchBar.text="Amber"
   self.searchBar(self.searchBar, textDidChange: "Amber")
0
nanospeck