セグメント化されたコントロールと UITableView を含む UIViewController があります。すべて、ストーリーボードで設定された Autolayout を使用します。私が設定した制約のコードバージョンは次のとおりです。
H:|-[SegmentedControls]-|
H:|[TableView]|
V:|-[SegmentedControls]-[TableView]|
テーブルのヘッダー ビューとして UISearchController と UISearchbar を追加しました。検索結果を表示するために、新しい UITableViewController を作成します。
UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
searchResultsController.tableView.dataSource = self;
searchResultsController.tableView.delegate = self;
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
self.searchController.delegate = self;
self.searchController.searchResultsUpdater = self;
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
self.clientListTable.tableHeaderView = self.searchController.searchBar;
self.searchController.searchBar.scopeButtonTitles = @[@"Active", @"Inactive"];
self.definesPresentationContext = YES;
しかし、次の問題に遭遇しました-検索バーを押すとアニメーションが表示されますが、表示されたビューは画面の一部しか表示されず、全画面表示ではなく、上下に淡色のクロムが表示されます。提示されたビューのサイズは、検索バーをホストするテーブルビューの 1 つと同じで、画面の垂直方向の中央に配置されているようです。検索結果の表示をオーバーライドして全画面表示にする方法がわかりません。表示中のビュー コントローラーと表示中のビュー コントローラーの両方にModalPresentationStyleを明示的に設定しようとしましたが、うまくいきませんでした。検索結果のプレゼンテーション コントローラーを何らかの方法でオーバーライドする必要があると感じていますが、どこから始めればよいかわかりません。何かアイデアはありますか?