2015-12-14 3 views
2

У меня есть два контроллера вида, каждый из которых содержит UISearchController и UITableView. Кодекс в viewDidLoad является:UISearchBar неправильно анимируется под навигационной панелью

SearchResultsTableViewController *searchResultController = [[SearchResultsTableViewController alloc]initWithNibName:@"SearchResultsTableViewController" bundle:nil]; 
UINavigationController *navSearchResultsController = [[UINavigationController alloc] initWithRootViewController:searchResultController]; 

self.searchController = [[UISearchController alloc] initWithSearchResultsController:navSearchResultsController]; 
self.searchController.searchResultsUpdater = self; 
self.searchController.dimsBackgroundDuringPresentation = YES; 
[self.searchController.searchBar sizeToFit]; 
self.searchController.searchBar.delegate = self; 
self.searchController.delegate = self; 

self.tableView.tableHeaderView = self.searchController.searchBar; 
self.tableView.userInteractionEnabled = YES; 

первый контроллер представления является rootViewController, который прекрасно работает без каких-либо проблем. Второй контроллер просмотра перемещается через навигационный контроллер на основе выбора сегмента.

[self.navigationController pushViewController:self.vc]; 

Существует только одна проблема с контроллером второго вида. Когда я нажимаю на searchBar, он анимирует вверх и идет под панелью навигации, а первый - в своем месте и не поднимается вверх.

Может ли кто-нибудь сказать мне, как отключить эту анимацию? Я хочу сохранить searchBar на том же месте во время поиска. Это точно такая же реализация для обоих контроллеров. Почему каждый действует по-другому?

Спасибо,

+0

Я не понимаю, это 'второго контроллера представления выталкивается через навигацию контроллер на основе сегмента selection.' –

+0

Я имею в виду есть сегментированный контроллер. Когда я нажимаю второй сегмент, он переходит ко второму viewController. – Missa

ответ

0

Установите hidesNavigationBarDuringPresentation boolean on the UISearchController в NO.

self.searchController.hidesNavigationBarDuringPresentation = NO; 

Или попробуйте this answer, это похоже на то, что вы пытаетесь сделать. Но вы, вероятно, хотите, чтобы настроить эту строку:

[super setActive: visible animated: animated]; // instead of passing animated, pass NO 
+0

Я попытался установить hidesNavigationBarDuringPresentation, и он тоже не работает. И UISearchController не имеет анимированного параметра с помощью метода setActive. – Missa

Смежные вопросы