私は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;
編集:私は、検索バーにフォーカスがあるときにテーブルビューセルが淡色表示されていることに気づきます。だから私は検索コントローラがすべてのタッチをキャプチャしていると思うし、おそらくそれらを '取り消し'アクションとして扱うと思う。もしそうなら、どうやってこのように取り消すのですか?
はhttps://developer.apple.com/reference/uikit/uisearchcontroller/1618656-obscuresbackgroundduringpresenta を見てみましょう>「あなたが検索可能なコンテンツを表示するには、同じビューコントローラを使用する場合検索結果を表示するには、このプロパティをfalseに設定することをお勧めします。このプロパティのデフォルト値はtrueです。 –
はい、あなたは正しいです - それは私の問題を解決しました。あなたが投稿したのとほぼ同じ時に私は自分自身を見つけました。私はちょっとばかばかしい。とにかく、私はそれを他の誰かに後で助ける場合に備えて、答えとして投稿しました。 –