2010-08-23 26 views
30

Quiero cerrar mi UISearchDisplayController cuando el usuario hace clic en el botón "Buscar" ya que estoy cargando nuevos datos de la web. ¿Cómo cierro el controlador programáticamente? Ya he llamado al método adecuado, pero no sé cómo hacerlo.¿Cómo cierro un UISearchDisplayController programmatically?

Pensé que el siguiente podría funcionar, pero estoy equivocado.

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [self.searchDisplayController finalize]; 
} 

Respuesta

68
[self.searchDisplayController setActive:NO animated:YES]; 

disfrutar.

+1

Muchas gracias ... funciona muy bien y es útil en 2012 también :) – Xtrician

+0

esto no funcionó para mí. Dije que una vez que el usuario toca en algún lugar en (vacío) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {[self.searchDisplayController setActive: NO animado: YES];} Pero esto no lo dejó ir. Se llamó a este método pero no se obtuvo ningún resultado. – coolcool1994

+0

Perfecto. Estoy usando esto en vista de desaparecer. Justo lo que necesitaba. –

3

Necesitas asegúrese de configurar activa en false en el hilo principal:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.searchDisplayController setActive:NO animated:YES]; 
}); 
2
func setActive(_ visible: Bool, 
    animated animated;: Bool) 

Si está utilizando rápida.

+0

En realidad, para Swift, la propiedad es 'activa' – gigo

Cuestiones relacionadas