これはささいなことですが、UISearchControllerをプログラムで閉じる方法を見つけることができませんか?
UISearchDisplayControllerではなく、新しいUISearchController(2014年にiOS 8で導入された)であることに注意してください。
これまでのところ、私が持っているものです
// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false
しかし、まだキャンセルボタンがあり、それを取り除くことはできません。
OKですので、さらにテストした後、設定するだけでよいことがわかります。
searchController.active = false
// or Swift 4+
searchController.isActive = false
これは私が最初に試したものですが、動作しなかったUISearchControllerDelegateメソッドの1つで呼び出しました(おそらくdispatch_asyncで呼び出したはずです(halbanoの答えはそれを確認しているようです))。
とにかく、私はその答えをオンラインで見つけることができなかったので、私は自分の質問に答えています。それが誰かを助けることを願っています。
別のビューにセグメンテーションした後に検索コントローラーを閉じるときに、この問題が発生しましたか?私もこの問題に遭遇しました。使いたいかもしれません
self.definesPresentationContext = true
この投稿に従ってUISearchControllerを提示するView Controllerで ViewがプッシュされたときにUISearchControllerが却下されない 。わたしにはできる。
ナビゲーションバーに埋め込まれた鉱山を紹介していました。私のために働くコードは:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchController setActive:NO];
self.navigationController.navigationBar.topItem.title = @"MYTITLE".uppercaseString;
self.navigationItem.titleView = nil;
});
}
それが誰かを助けることを願っています。
スイフト4+
searchController.isActive = false
検索とinteractionControllerを使用してこの問題が発生し、次の行を含めるだけで解決しました:self.dismissViewControllerAnimated(false、completion:nil)
インタラクションを開き、デリゲートを変更せずに検索をクリアします。