UISearchBar en la barra de navegación

¿Cómo puedo mostrar UISearchBar en NavigationBar?

No puedo entender cómo hacer esto.

Su ayuda es muy apreciada.

Para poner searchBar en el centro de la barra de navegación:

self.navigationItem.titleView = self.searchBarTop; 

Para poner searchBar en el lado izquierdo / derecho de la barra de navegación:

 UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; self.navigationItem.rightBarButtonItem = searchBarItem; 

A partir de iOS 7, el UISearchDisplayController admite esto por defecto. Establezca displaySearchBarInNavigationBar displaysSearchBarInNavigationBar = YES UISearchDisplayController para que esto funcione fácilmente.

Por la documentación:

A partir de iOS 7.0, puede usar un controlador de visualización de búsqueda con una barra de navegación (una instancia de la clase UINavigationBar) configurando las propiedades de visualización de SearchSearchBarInNavigationBar y navigationItem del controlador de visualización de búsqueda.

Como señaló un comentador, el uso de searchDisplayController.displaysSearchBarInNavigationBar = true termina ocultando los elementos del botón izquierdo / derecho existentes.

He encontrado dos maneras diferentes de agregar una searchBar de searchBar a una searchBar de navigationBar usando la nueva propiedad de iOS7 en searchDisplayController .

1) Enfoque basado en punta

Si está utilizando un .xib, puede establecer un atributo de tiempo de ejecución definido por el usuario para este valor y, por cualquier razón, el elemento LeftBarButtonItem se mantiene intacto. No lo he probado con un RightBarButtonItem.

enter image description here

2) Código (el tiempo importa)

Si desea implementar en código, el tiempo parece importar. Parece que debes agregar searchBar a la searchBar de navigationBar primero, luego configura tu barButtonItem .

 - (void)viewDidLoad { ... self.searchDisplayController.displaysSearchBarInNavigationBar = true; self.navigationItem.leftBarButtonItem = [UIBarButtonItem new]; ... } 

Consulte el código de muestra de UICatalog de Apple. Muestra cómo usar el nuevo UISearchController de tres formas diferentes: modalmente, en la barra de navegación y debajo de la barra de navegación.