2010-08-23 4 views
30

Desidero chiudere UISearchDisplayController quando l'utente fa clic sul pulsante "Cerca" poiché sto caricando nuovi dati dal Web. Come posso chiudere il controller programmaticamente? Ho già chiamato il metodo corretto, ma non so come farlo.Come si chiude UISearchDisplayController a livello di programmazione?

Ho pensato che il sotto funzionasse, ma ho torto.

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

risposta

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

Enjoy.

+1

Grazie mille .. ottimo lavoro e utile anche nel 2012 :) – Xtrician

+0

questo non ha funzionato per me. Ho detto una volta che l'utente ha toccato da qualche parte in - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {[self.searchDisplayController setActive: NO animated: YES];} Ma questo non l'ha lasciato andare via. Questo metodo è stato chiamato ma nessun risultato. – coolcool1994

+0

Perfetto. Sto usando questo in viewWillDisappear. Proprio quello di cui avevo bisogno. –

3

È necessario assicurarsi di impostare attivo a false sul thread principale:

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

Se si utilizza veloce.

+0

In realtà, per Swift la proprietà è 'attiva' – gigo