2010-08-28 3 views
5

J'utilise le code suivant pour afficher un UISearchBar avec une barre d'étendues.UISearchBar n'affiche pas Scope Bar

UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 45)]; 
searchBar.barStyle = UIBarStyleDefault; 
searchBar.showsCancelButton = NO; 
searchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone; 

searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"One", @"Two", nil]; 
searchBar.showsScopeBar = YES; 

self.tableView.tableHeaderView = searchBar; 

[searchBar release]; 

Cependant, la barre d'étendue n'est jamais affichée. Pourquoi n'est-il pas affiché et comment puis-je résoudre ce problème?

Répondre

7

dans le initWithFrame:CGRectMake(0, 0, 320, 45), la hauteur correspond uniquement à la hauteur d'une barre de recherche, à l'exclusion d'une barre d'étendue. Essayez de remplacer avec quelque chose comme:

UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 90)]; 
+0

Merci beaucoup! Si simple. – Joshua

1
(void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *) 
controller{ 
    _searchBar.showsScopeBar = YES; 
    [_searchBar sizeToFit]; 
} 
0

Si vous ne disposez pas UISearchDisplayController disponibles, vous pouvez essayer d'utiliser UISearchBarDelegate callbacks:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar 
{ 
    self.searchBar.showsScopeBar = YES; 
    [self.searchBar sizeToFit]; 
    return YES; 
} 

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{ 
    self.searchBar.showsScopeBar = NO; 
    [self.searchBar sizeToFit]; 
}