UITableView と UISearchBar を追加したい UIViewController があります。UISearchBar を tableView に追加するのではなく、tableView のすぐ上に置いてください。
含まれているviewControllerのこの実装を思いつきました:
- (void)viewDidLoad {
[super viewDidLoad];
self.testTableView = [[TestTableViewController alloc] init];
self.testTableView.edgesForExtendedLayout = UIRectEdgeNone;
self.searchBar = [[UISearchBar alloc] init];
self.searchBar.delegate = self.testTableView;
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self.testTableView];
self.searchController.delegate = self.testTableView;
self.searchController.searchResultsDataSource = self.testTableView;
self.searchController.searchResultsDelegate = self.testTableView;
self.searchBar.frame = CGRectMake(500.0f, 70.0f-44.0f, 500.0f, 44.0f);
self.testTableView.view.frame = CGRectMake(500.0f, 70.0f, 500.0f, 500.0f);
// add views
[self.view addSubview:self.testTableView.view];
[self.view addSubview:self.searchBar];
}
TestTableViewController は基本的に、いくつかのダミー データを持つ一般的な TableViewController です。
これはうまくいくようですが、検索を行うと、searchResults tableView が元の tableView に追加され、スクロール ビュー内にスクロール ビューがあるときに発生する奇妙なアーティファクトが発生するようです。
次のように searchBar を tableView に追加すると、この問題は発生しないことがわかりました。
self.testTableView.tableView.tableHeaderView = self.searchBar;
それ以外の:
[self.view addSubview:self.searchBar];
しかし、これにより他の問題が発生します (searchBar のすぐ上の行、searchBar がコンテンツと共にスクロールします)。
また: - 新しい UISearchController を使用できません - ストーリー ボードを使用してこれを実装できません
ここで何が間違っているのか誰にも分かりますか? 上記のコードに問題がある可能性があります。
サンプル プロジェクトは、 http ://www.file-upload.net/download-9987146/SearchTableViewTest.zip.html からダウンロードできます 。