Как я могу показать UISearchBar в NavigationBar?
Я не могу понять, как это сделать.
Ваша помощь очень ценится.
Как я могу показать UISearchBar в NavigationBar?
Я не могу понять, как это сделать.
Ваша помощь очень ценится.
Чтобы поместить searchBar в центр навигацииBar:
self.navigationItem.titleView = self.searchBarTop;
Чтобы поместить searchBar влево/вправо sideBar:
UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
self.navigationItem.rightBarButtonItem = searchBarItem;
Как и в iOS 7, UISearchDisplayController поддерживает это по умолчанию. Установите UISearchDisplayController displaysSearchBarInNavigationBar = YES
, чтобы получить эту работу легко.
В документации:
Начиная с iOS 7.0, вы можете использовать контроллер отображения поиска с панелью навигации (экземпляр класса UINavigationBar), настроив контроллеры отображения поиска, отображая свойстваSearchBarInNavigationBar и свойства navigationItem.
Как заметил один из комментаторов, использование searchDisplayController.displaysSearchBarInNavigationBar = true
завершает скрытие любых существующих элементов кнопки влево/вправо.
Я нашел два разных способа добавления searchBar
в navigationBar
с использованием нового свойства iOS7 на searchDisplayController
.
1) Подход, основанный на Nib
Если вы используете .xib, вы можете установить атрибут Runtime User Defined Runtime для этого значения, и по какой-либо причине функция leftBarButtonItem остается в такте. Я не тестировал его с помощью rightBarButtonItem.
2) Код (Сроки)
Если вы хотите внедрить в код, время, похоже, имеет значение. Кажется, что сначала нужно добавить searchBar
в navigationBar
, а затем установить barButtonItem
.
- (void)viewDidLoad
{
...
self.searchDisplayController.displaysSearchBarInNavigationBar = true;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
...
}
Ознакомьтесь с образцом кода Apple UICatalog. Он показывает, как использовать новый UISearchController
тремя различными способами: модально, в навигационной панели и под панелью навигации.
Фрагмент кода цели C
- (void)viewDidLoad {
UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
if (@available(iOS 11.0, *)) {
self.navigationItem.searchController = searchController;
} else {
self.navigationItem.titleView = searchController.searchBar;
}
}
Подробнее здесь