2010-08-28 136 views
5

我使用下面的代碼來顯示帶有範圍欄的UISearchBarUISearchBar不顯示範圍欄

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]; 

但是,範圍欄從不顯示。爲什麼沒有顯示,我該如何解決這個問題?

回答

7

initWithFrame:CGRectMake(0, 0, 320, 45)中,高度只是搜索欄的高度,不包括範圍欄。試着用一些替代,如:

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

非常感謝!很簡單。 – Joshua 2010-08-28 14:32:56

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

如果沒有UISearchDisplayController可用做,你可以嘗試使用UISearchBarDelegate回調:

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

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