updatesearchresults tutorial searchcontroller for example custom bar swift uisearchcontroller

swift - tutorial - ¿Cómo se descarta un UISearchController?(iOS 8 y sigue)



searchcontroller tutorial (5)

Esto debe ser trivial, pero no puedo encontrar cómo se supone que debe descartar un UISearchController mediante programación.

Tenga en cuenta que es el nuevo UISearchController (introducido en 2014 con iOS 8), no el UISearchDisplayController.

Hasta ahora esto es lo que tengo

// Dismiss the search tableview searchController.dismissViewControllerAnimated() // Clear the Search bar text searchController.active = false

Pero todavía tengo el botón cancelar y no puedo deshacerme de él.


¿Tuviste este problema cuando intentas descartar el controlador de búsqueda después de pasar a otra vista? También me he encontrado con este problema. Creo que quizás quieras usar

self.definesPresentationContext = true

en el controlador de vista que presenta el UISearchController según esta publicación UISearchController no se descarta cuando se presiona View . Esto funciona para mi.


Estaba presentando la incrustación de la mina en una barra de navegación. El código que funciona para mí fue:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{ dispatch_async(dispatch_get_main_queue(), ^{ [self.searchController setActive:NO]; self.navigationController.navigationBar.topItem.title = @"MYTITLE".uppercaseString; self.navigationItem.titleView = nil; }); }

Espero que ayude a alguien.


OK, después de más pruebas, resulta que solo tienes que configurar:

searchController.active = false // or swift 4+ searchController.isActive = false

Esto es lo primero que probé, pero lo llamé en uno de los métodos UISearchControllerDelegate que no funcionó (probablemente debería haberlo llamado con dispatch_async (la respuesta de halbano parece confirmar eso)).

De todos modos, como no pude encontrar esa respuesta en línea, estoy respondiendo mi propia pregunta, espero que ayude a alguien.


SWIFT 4+

searchController.isActive = false


Tuve este problema usando el controlador de búsqueda e interacción, resuelto después de incluir la línea: self.dismissViewControllerAnimated (falso, finalización: nulo)

Abra la interacción y borre la búsqueda sin cambios en el delegado.