39 votes

Comment supprimer par programmation un UISearchBar?

J'ai une vue de table standard, avec un UISearchController implémenté via un NIB. Je veux imiter ce qui se passe lorsque l'utilisateur clique sur "Annuler" dans la barre de recherche - le comportement normal est que la barre de recherche disparaît et que le tableau revient à son état d'origine. En gros, je souhaite que la même chose se produise lorsque l’utilisateur sélectionne un élément qui apparaît dans les résultats de sa recherche.

Je ne trouve nulle part le processus de ce qui se passe lorsque l'utilisateur clique sur "Annuler".

131voto

Nat Baldwin Points 971

C'est un sorta vieille question, mais je viens de battre ma tête contre ce pour une heure ou deux et finalement pensé à elle, donc je pensais que je partage pour la postérité. Au début, j'ai essayé de faire des choses comme démissionnaire premier intervenant / suppression de recherche texte / etc par la main, mais dans ce point de vue que je voulais à l'utilisateur de pouvoir éventuellement utiliser la barre de recherche plusieurs fois, et de faire les choses manuellement a été ce qui signifie que la barre de recherche aurait dû être re-set-up à chaque fois que l'utilisateur a commencé à le modifier à nouveau - semblait être la bonne approche. Voici ce que j'ai fait:

J'avais déjà ajouté à la barre de recherche, avec l'option de recherche de contrôleur d'affichage, dans Interface Builder. Dans mon application, j'ai mis en place un UISearchDisplayController IBOutlet, et lié à la recherche de contrôleur d'affichage à l'aide de l'IB. Enfin, à l'endroit où je veux faire disparaître la barre de recherche, je n'ai qu'à appeler:

[mySearchController setActive:NO];

Fonctionne comme un charme!

5voto

NiKe Points 331

Voici comment j'ai résolu ce problème après quelques heures d’expériences =)

 for(UIView *subView in self.searchDisplayController.searchBar.subviews){
    if([subView isKindOfClass:UIButton.class])
    {
        UIButton *cancelButton = (UIButton*)subView;
        [cancelButton sendActionsForControlEvents: UIControlEventTouchUpInside];
        break;
    } 
}
 

5voto

Felixs Points 624

Généralement, la méthode searchBarCancelButtonClicked: ressemble à ceci:

 yourSearchBar.text = @"";
[yourTableView reloadData];
[yourSearchBar resignFirstResponder];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X