2010-12-08 5 views
0

Je souhaite cacher/afficher la rechercheAffichageController du bouton (Chercher) situé dans la partie droite de la barre de navigation. Lorsque l'utilisateur clique sur ce bouton, searchDisplayController est affiché et l'utilisateur peut effectuer une recherche dans le tableau. Lorsque l'utilisateur clique à nouveau sur ce bouton, searchDisplayController est masqué avec l'animation.Masquer/Afficher la rechercheDisplayController de la recherche NavigationBar button

Comment faire?

Répondre

0

Il semble que vous avez déjà une poignée sur l'ajout du bouton de recherche dans la barre de navigation, mais dans le cas où vous n'êtes pas, voici le code qui peut le faire:

// perhaps inside viewDidLoad 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
target:self 
action:@selector(showSearch:)] autorelease]; 

Une fois que vous avez dans place, vous devez implémenter la méthode showSearch: pour basculer la visibilité de la barre de recherche. Un point clé à considérer ici est que le UISearchDisplayController n'est pas une vue; l'UISearchBar que vous avez configuré avec est ce qui montre réellement l'interface de recherche. Donc, ce que vous voulez vraiment faire est de basculer la visibilité de cette barre de recherche. Les méthodes ci-dessous utilisent la propriété alpha de la barre de recherche pour la masquer ou la masquer, tout en animant le cadre de la vue principale pour occuper (ou quitter) l'espace occupé par la barre de recherche.

- (void)showSearch:(id)sender { 
    // toggle visibility of the search bar 
    [self setSearchVisible:(searchBar.alpha != 1.0)]; 
} 

- (void)setSearchVisible:(BOOL)visible { 
    // assume searchBar is an instance variable 
    UIView *mainView = self.tableView; // set this to whatever your non-searchBar view is 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:UINavigationControllerHideShowBarDuration]; 
    if (!visible) { 
     searchBar.alpha = 0.0; 
     CGRect frame = mainView.frame; 
     frame.origin.y = 0; 
     frame.size.height += searchBar.bounds.size.height; 
     mainView.frame = frame; 
    } else { 
     searchBar.alpha = 1.0; 
     CGRect frame = mainView.frame; 
     frame.origin.y = searchBar.bounds.size.height; 
     frame.size.height -= searchBar.bounds.size.height; 
     mainView.frame = frame; 
    } 
    [UIView commitAnimations]; 
} 
1

Pour ajouter le bouton de recherche dans la barre de navigation utiliser ce code:

UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearch:)]; 
self.navigationController.navigationBar.topItem.rightBarButtonItem = searchButton; 

et mettre en œuvre la méthode suivante:

- (IBAction)toggleSearch:(id)sender 
{ 
    // do something or handle Search Button Action. 
} 
Questions connexes