У меня есть UISearchController
с UITableViewController
как searchResultsController
, UISearchBar
этого searchController
настроено на tableHeaderView
моего текущего tableView
, отображаемого в моем корневом ViewController. Почти все работает хорошо, как и ожидалось. Но в анимации UISearchBar
(когда я нажимаю на панель поиска, и UINavigationBar
скрывается, а панель поиска поднимается вверх, как в UISearchDisplayController
), у меня странное поведение. Вместо того, чтобы перейти к позиции UINavigationBar
(y: 0), он выпрыгивает из экрана и запускает анимацию, которая показывает кнопку отмены. Я попытался переместить свой код создания экземпляра в viewDidLoad
вместо init
, и все осталось точно так же. Я думаю, что центр проблемы находится в рамке вида searchResultsController
, но я не уверен в этом (я пытался установить рамку, но безуспешно). Все, что я делаю, находится в чистом коде.
Вот соответствующая часть кода:
- (void) viewDidLoad {
[super viewDidLoad];
// search controller setup
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
self.searchController.delegate = self;
self.searchController.searchResultsUpdater = self;
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
self.searchController.definesPresentationContext = YES;
}
И у меня есть ленивая загрузка для searchResultsController
:
- (UITableViewController *)searchResultsController {
if (_searchResultsController == nil) {
_searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
_searchResultsController.tableView.delegate = self;
_searchResultsController.tableView.dataSource = self;
}
return _searchResultsController;
}
Я скачал пример кода с Apple, но они используют StoryBoards и xib для UITableViewCell, SearchController отлично работает в проекте. У кого-нибудь была такая же проблема? Как я могу это исправить? Любые решения или предложения будут оценены.
Спасибо за внимание.
self.definesPresentationContext = YES;
, которая оказалась решающей. - person Lorenzo   schedule 05.01.2015