Я бы хотел заменить панель навигации на показанную строку поиска и обратно.
ИЛИ
Было бы хорошо, если бы панель навигации всегда крутилась над содержимое моего основного контроллера вида.
I настроить контроллер поиска следующим образом:
_searchController = [[UISearchController alloc] initWithSearchResultsController:[[MySearchViewController alloc] init]];
_searchController.delegate = self;
_searchController.obscuresBackgroundDuringPresentation = TRUE;
_searchController.hidesNavigationBarDuringPresentation = TRUE;
_searchController.searchBar.placeholder = @"Search...";
_searchController.searchBar.delegate = self;
I show the контроллер поиска вот так:
- (void)searchButtonTapped:(id)sender
{
self.navigationItem.searchController = _searchController;
[self.navigationController.view setNeedsLayout];
[self.navigationController.view layoutIfNeeded];
[self.navigationItem.searchController.searchBar becomeFirstResponder];
}
I скрыть контроллер поиска вот так:
- (void)willDismissSearchController:(UISearchController*)searchController
{
self.navigationItem.searchController = nil;
[self.navigationController.view setNeedsLayout];
}
Я знаю, что есть свойство searchController.hidesNavigationBarDuringPresentation
, которое близко к что хочу но точно. Поскольку панель навигации скрывается только после того, как я вхожу в панель поиска, но я хочу, чтобы она уже скрывалась, когда я представляю панель поиска.
Как только я нажимаю кнопку значка поиска в навигации панель должна быть заменена контроллером поиска, и в верхней части видна только панель поиска. Кто-нибудь знает, как этого добиться?
Я уже пытался:
- , чтобы скрыть панель навигации, когда я показываю контроллер поиска с
[self.navigationController setNavigationBarHidden:YES animated:NO];
- управлять ограничением высоты панели поиска и изменять его в соответствии с visibilty
- , чтобы установить контроллер поиска на
navigationItem.titleView
-> это не то, что я хочу - скрыть контроллер поиска в соответствии с видимостью - > панель навигации остается на той же высоте, только контроллер поиска скрыт
- , чтобы использовать
self.definesPresentationContext
, но это похоже на настройку, которая мне нужна - имел посмотрите на
self.navigationItem.hidesSearchBarWhenScrolling
, но это не относится, так как я не использую контроллер табличного представления