72

これは些細なことに違いありませんが、プログラムで UISearchController を閉じる方法がわかりませんか?

UISearchDisplayController ではなく、新しい UISearchController (2014 年に iOS 8 で導入) であることに注意してください。

これまでのところ、ここに私が持っているものがあります

// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false

しかし、まだキャンセルボタンがあり、それを取り除くことはできません。

4

5 に答える 5

184

OK、さらにテストした後、設定するだけでよいことがわかりました:

searchController.active = false
// or swift 4+
searchController.isActive = false

これは私が試した最初のことですが、機能しなかった UISearchControllerDelegate メソッドの1つで呼び出しました(おそらくdispatch_asyncで呼び出す必要がありました(halbanoの答えはそれを確認しているようです))。

とにかく、オンラインでその答えを見つけることができなかったので、私は自分の質問に答えています.誰かの助けになることを願っています.

于 2015-02-10T17:48:29.310 に答える
23

別のビューにセグエインした後に検索コントローラーを閉じようとしたときに、この問題が発生しましたか? 私もこの問題に遭遇しました。私はあなたが使いたいと思うかもしれません

self.definesPresentationContext = true 

この記事に従って UISearchController を表示するビュー コントローラーでは、View is push されたときに UISearchController は閉じられません。わたしにはできる。

于 2015-12-02T06:32:38.750 に答える
11

ナビゲーションバーに鉱山の埋め込みを表示していました。私のために働くコードは次のとおりです。

- (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;
    });
}

それが誰かを助けることを願っています。

于 2015-12-12T23:19:28.590 に答える
7

スイフト 4+

searchController.isActive = false
于 2018-03-02T13:10:38.660 に答える
1

検索とinteractionControllerを使用してこの問題が発生しましたが、次の行を含めるだけで解決しました: self.dismissViewControllerAnimated(false, completion: nil)

インタラクションを開き、デリゲートを変更せずに検索をクリアします。

于 2016-10-27T13:18:34.500 に答える