UISearchBar в панели навигации - PullRequest
       16

UISearchBar в панели навигации

51 голосов
/ 23 февраля 2011

Как мне показать UISearchBar в NavigationBar?

Я не могу понять, как это сделать.

Ваша помощь очень ценится.

Ответы [ 5 ]

84 голосов
/ 30 января 2012

Чтобы поместить панель поиска в центр панели навигации:

self.navigationItem.titleView = self.searchBarTop;

Чтобы поместить панель поиска в левую / правую часть панели навигации:

UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
self.navigationItem.rightBarButtonItem = searchBarItem;
20 голосов
/ 18 сентября 2013

Начиная с iOS 7, UISearchDisplayController поддерживает это по умолчанию. Установите UISearchDisplayController в displaysSearchBarInNavigationBar = YES, чтобы это работало легко.

Согласно документации:

Начиная с iOS 7.0, вы можете использовать контроллер отображения поиска с панелью навигации (экземпляр класса UINavigationBar), настроив свойства displaySearchBarInNavigationBar и navigationItem контроллера дисплея поиска.

12 голосов
/ 28 ноября 2013

Как заметил один комментатор, использование searchDisplayController.displaysSearchBarInNavigationBar = true в итоге скрывает все существующие элементы кнопок левой / правой панели.

Я нашел два разных способа добавления searchBar к navigationBar с помощью iOS7.новое свойство в searchDisplayController.

1) Подход на основе Nib

Если вы используете .xib, вы можете установить для этого значения пользовательский атрибут времени выполненияи по любой причине, leftBarButtonItem остается в такте.Я не проверял его с rightBarButtonItem.

enter image description here

2) Код (время имеет значение)

Если вы хотите реализовать в кодевремя, кажется, имеет значение.Кажется, вы должны сначала добавить searchBar к navigationBar, а затем установить barButtonItem.

- (void)viewDidLoad
{
    ...
    self.searchDisplayController.displaysSearchBarInNavigationBar = true;
    self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
    ...
}
11 голосов
/ 28 августа 2015

Проверьте образец кода Apple UICatalog . Он показывает, как использовать новый UISearchController тремя различными способами: модально, на панели навигации и под панелью навигации.

0 голосов
/ 16 января 2019

Фрагмент кода C для объектива

- (void)viewDidLoad {
    UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:nil];

    if (@available(iOS 11.0, *)) {

        self.navigationItem.searchController = searchController;
    } else {

        self.navigationItem.titleView = searchController.searchBar;
    }
}

Подробнее здесь - https://blog.kiprosh.com/ios-11-new-navigation-bar-and-search-controller/

...