2010-08-23 5 views
30

Je souhaite fermer mon UISearchDisplayController lorsque l'utilisateur clique sur le bouton "Rechercher" car je charge de nouvelles données sur le Web. Comment fermer le contrôleur par programmation? J'ai déjà la bonne méthode appelée, mais je ne sais pas comment le faire.Comment fermer un UISearchDisplayController par programme?

Je pensais que ce qui suit fonctionnerait, mais je me trompe.

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

Répondre

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

Profitez.

+1

Merci beaucoup .. travailler très bien et utile en 2012 aussi :) – Xtrician

+0

cela n'a pas fonctionné pour moi. J'ai dit une fois que l'utilisateur tapait quelque part dans - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {[self.searchDisplayController setActive: NON animated: YES];} Mais cela ne l'a pas laissé partir. Cette méthode a été appelée mais aucun résultat. – coolcool1994

+0

Parfait. J'utilise ceci dans viewWillDisappear. Juste ce dont j'avais besoin. –

3

Vous devez vous assurer que vous définissez actif false sur thread principal:

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

Si vous utilisez rapide.

+0

En fait, pour Swift, la propriété est "active" – gigo

Questions connexes