У меня есть UIViewController, в котором есть Segmented Control и UITableView. Все используют 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;
Но затем я столкнулся со следующей проблемой: когда я нажимаю на строку поиска, она анимируется, но представленный вид занимает только часть экрана, представленную затемненным хромом сверху и снизу, вместо того, чтобы отображаться в полноэкранном режиме. Размер представленного представления, по-видимому, равен размеру табличного представления, в котором размещена панель поиска, просто центрированная по вертикали на экране. Я не знаю, как переопределить представление результатов поиска, чтобы они отображались в полноэкранном режиме. Я попытался явно установить ModalPresentationStyle как на представленном контроллере представления, так и на представленном, но это не сработало. У меня возникает ощущение, что мне нужно каким-то образом переопределить контроллер представления результатов поиска, но я не знаю, с чего начать, есть идеи?