usar ubicacion rutas ruta privada navegacion marcar mapas mapa los hay funciona esta disponibles desde como actualizar ios uinavigationitem uisearchcontroller

ubicacion - Mostrar barra de búsqueda en la barra de navegación sin desplazarse en iOS 11



navegacion privada safari iphone (3)

Adjunto un UISearchController a la propiedad navigationItem.searchController de un UITableViewController en iOS 11. Esto funciona bien: puedo usar la agradable barra de búsqueda de estilo 11 de iOS.

Sin embargo, me gustaría hacer que la barra de búsqueda sea visible en el lanzamiento. Por defecto, el usuario tiene que desplazarse hacia arriba en la vista de tabla para ver la barra de búsqueda. ¿Alguien sabe cómo es esto posible?

Izquierda: situación predeterminada después del lanzamiento. Derecha: barra de búsqueda visible (al desplazarse hacia arriba). Me gustaría tener la barra de búsqueda visible después del lanzamiento, como en la captura de pantalla correcta.

Ya descubrí que la barra de búsqueda se puede hacer visible estableciendo la propiedad hidesSearchBarWhenScrolling de mi elemento de navegación en falso. Sin embargo, esto hace que la barra de búsqueda esté siempre visible, incluso cuando se desplaza hacia abajo, lo cual no es lo que quiero.


Lo siguiente hace que la barra de desplazamiento sea visible al principio, luego le permite ocultarse al desplazarse:

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if #available(iOS 11.0, *) { navigationItem.hidesSearchBarWhenScrolling = false } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) if #available(iOS 11.0, *) { navigationItem.hidesSearchBarWhenScrolling = true } }

Usar isActive no hizo lo que quería, activa la barra de desplazamiento (mostrando el botón cancelar, etc.), cuando todo lo que quiero es que sea visible.


Lo siguiente hace que searchBar se convierta en el primer respondedor:

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) DispatchQueue.main.async { self.searchController.searchBar.becomeFirstResponder() } }


Puede establecer la propiedad isActive en true después de agregar searchController al navigationItem .

Solo así:

override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) searchController.isActive = true }