2017-02-03 6 views
1

私はUITableViewのヘッダーでUISearchControllerのUISearchBarを使用しています。検索バーのフィールドにテキストを入力すると、関連するすべてのメソッドが呼び出され、テーブルビューには正しい検索結果が期待どおりに表示されます。フォーカスを失うとUISearchControllerの検索バーのテキストが消えます

問題は、結果の1つをタップして何かをしたいときに発生します。テーブルビューセルの1つをタップすると、検索バーのフィールドは空になります。検索テキストが空になったので、検索結果が更新され、テーブルビューはゼロの結果でリロードされます。テーブルセルのタップは何もしません。なぜなら、テーブルセルはもはや存在しないからです。

私のupdateSearchResultsForSearchController:メソッドを更新すると、検索文字列が空のときに検索結果を更新しないようにすることで、ほとんどの問題を回避できます。そして、これはうまく動作します。しかし、いずれにせよ、検索フィールドに検索テキストを残しておきたいのですが、これが私の質問の要点です...

なぜ検索テキストが検索フィールドから消えてしまいますか?他の場所でタップすると検索フィールドが空になることはありませんか?ここで

は、私は検索バーと検索コントローラの設定方法は次のとおりです。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    searcher = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    searcher.searchResultsUpdater = self; 
    searcher.delegate = self; 
    searcher.definesPresentationContext = YES; 
    resultsTable.tableHeaderView = searcher.searchBar; 

編集:私は、検索バーにフォーカスがあるときにテーブルビューセルが淡色表示されていることに気づきます。だから私は検索コントローラがすべてのタッチをキャプチャしていると思うし、おそらくそれらを '取り消し'アクションとして扱うと思う。もしそうなら、どうやってこのように取り消すのですか?

+0

はhttps://developer.apple.com/reference/uikit/uisearchcontroller/1618656-obscuresbackgroundduringpresenta を見てみましょう>「あなたが検索可能なコンテンツを表示するには、同じビューコントローラを使用する場合検索結果を表示するには、このプロパティをfalseに設定することをお勧めします。このプロパティのデフォルト値はtrueです。 –

+0

はい、あなたは正しいです - それは私の問題を解決しました。あなたが投稿したのとほぼ同じ時に私は自分自身を見つけました。私はちょっとばかばかしい。とにかく、私はそれを他の誰かに後で助ける場合に備えて、答えとして投稿しました。 –

答えて

1

私は追加する必要:

searcher.obscuresBackgroundDuringPresentation = NO; 
関連する問題