tutorial searchcontroller example bar ios iphone xcode swift search

ios - example - UISearchController no se descarta cuando se presiona View



uisearchbar swift 4 (1)

Tengo el mismo problema exacto, lo he solucionado estableciendo:

self.definesPresentationContext = YES;

en el controlador de vista que presenta el UISearchController. Esto es recomendado por Apple en la sesión 228 de WWDC, lea al respecto aquí: http://asciiwwdc.com/2014/sessions/228 .

Sé que este es un largo relato, pero es solo un problema que prometo.

La puesta en marcha

Estoy obteniendo un comportamiento muy extraño con un UISearchController. Permítanme describir la jerarquía, luego explicaré paso a paso lo que sucede en mi video:

La primera vista que ve es un ViewController normal, con un tableView y el UISearchController como entidades completamente separadas. El UISearchController tiene su propio searchResultsController que configuro cuando lo creo:

let searchResultsController = MyResultsControllerClass() searchController = UISearchController(searchResultsController: searchResultsController)

Esa es la configuración básica.

El comportamiento

Un enlace a un video del comportamiento

MyResultsControllerClass tiene un tableView, así como un puntero al controlador de la vista maestra en el que se encuentran todas estas vistas. Cuando SearchBar SearchController comienza a buscar, verá que tableView aparece. Luego toco un resultado, Programming Club. MyResultsControllerClass usa el puntero a la vista maestra para enviar un nuevo controlador de vista (solo detalles sobre ese evento) así:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let activityDetail = ActivityDetailViewController(nibName: nil, bundle: nil, activity: searchResults[indexPath.row]) parentController?.navigationController?.pushViewController(activityDetail, animated: true) }

¡Puedes ver que esto ocurre detrás de la barra de búsqueda, pero SearchController no está "tapado" por la vista presentada! Este es mi problema. Como puede ver, aún puedo interactuar con él. Cuando presiono "Cancelar", finalmente desaparece.

Lo que he intentado

Ahora, pensé que esto podría tener que ver con el hecho de que un UISearchController es de hecho un UIViewController, si entiendo correctamente. Así que intenté empujar desde el UISearchController, no pasa nada. Intenté incrustar el UISearchController en su propio UINavigationController y presionar desde searchController.navigationController, no pasa nada. Puedo cancelar completamente la edición antes de presionar, pero quiero que la edición aún exista cuando regresen.

¿Qué estoy haciendo mal? ¿Hay una mejor manera de hacer esto?