У меня есть контроллер табличного представления с UISearchController
, который устанавливает UISearchBar
как tableView.tableHeaderView
. При обновлении результатов поиска я использую beginUpdates
и endUpdates
и связанные с ними методы для обновления данных для представления таблицы.
Это приведет к исчезновению строки поиска; tableHeaderView
устанавливается в пустой, общий UIView
того же размера, что и строка поиска. Если я просто использую reloadData
вместо целой процедуры beginUpdates
/endUpdates
, все в порядке.
Контроллер табличного представления встроен в обычный контроллер вида; в нем нет контроллера навигации. Это вся реализация контроллера табличного представления, необходимого для воспроизведения проблемы:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.tableView.tableHeaderView = self.searchController.searchBar;
}
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
[self.tableView beginUpdates];
[self.tableView endUpdates];
}
Почему это приводит к замене строки поиска пустым представлением и как ее можно избежать?