Apple のサンプル iOS プロジェクトTableSearchのコードを変更して、コンテンツを解析して Web サービスを検索するために使用します。私が実装したものはすべて、SearchDisplayController の SearchBar を使用して検索を実行するときの 1 つの醜い詳細を除いて、正常に機能します。「検索」ボタンがタップされたときに最初に検索機能を呼び出すように、SearchDisplayController の動作を変更しました。
問題は、検索の反復 (NSOperationQueue でバックグラウンドで実行される) が終了したときに、(searchDisplayController の)「searchResultsTableView」が自動的に表示されないか、結果のコンテンツが割り当てられないことです。その後、SearchBar のテキストを変更するか、検索フィールドに触れたときに表示されるビューから [キャンセル] ボタンをタップすると (TableSearch を参照)、正しい TableView が検索結果とともに表示されます。このステップは、検索操作が終了した直後、つまり対話する前に実行したいだけです。この段階では、「No Results」ラベルが現在表示されています。メソッド「filterContentForSearchText」および「shouldReloadTableForSearchString」は、元の TableSearch プロジェクトから変更されていません。
SearchDisplayController とその属性のさまざまなクラス参照を調べましたが、最終的な解決策はまだ見つかりませんでした。
NSOperation が終了した後に確実に繰り返されるセクションで次のことを試しましたが、問題は解決していないようです。
[self.searchDisplayController.searchResultsTableView removeFromSuperview];
と
self.searchDisplayController.searchResultsTableView.hidden = YES;
これらの操作は両方とも、表示したい正しいビューを持っていますが、ビューが再び非表示になるように状態を変更するまで、スクロールは無効になります。ただし、TableView セルを選択することは可能です。私は基本的にスクロールを有効にしてこれを持ちたい...
よろしくお願いいたします。