UISearchBarに(検索ボタンを押すなどの)新しい検索を自動的に開始させるにはどうすればよいですか?これを達成する簡単な方法はありますか?
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"
検索入力フィールドを最初の応答者にするだけです。
[self.searchInputField becomeFirstResponder];
SearchBarを強制することができます。
Objective C:
[self searchBar:yourSearchBarName textDidChange: yourSearchingString];
Swift 3.0:
self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)
これにより、searchBarがトリガーされます。
必要なテキストが検索バー内にあることを確認した後、このUISearchBarDelegateメソッドself.searchBarSearchButtonClicked(searchBar)
を既に実装していると仮定して、searchBarSearchButtonClicked(_ searchBar: UISearchBar)
(検索バーを渡す)を呼び出すことができます。
はい、UISearchbarDelegate
のsearchBarSearchButtonClicked:
を暗黙的に呼び出すだけです。このデリゲートの詳細については、 公式ドキュメント を参照してください。
ばかげているように見えますが、機能するので、ばかげていません;)
NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;
デリゲートオブジェクトを取得できませんが、searchBar自体を取得できます。このコードは機能します。
let searchBar: UISearchBar =
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""
これはうまくいきました-Swift 4
searchBar.text="Amber"
self.searchBar(self.searchBar, textDidChange: "Amber")