我以编程方式创建了一个UISearchController,并在viewDidLoad中设置范围按钮标题
UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
searchResultsController.tableView.dataSource = self;
searchResultsController.tableView.delegate = self;
[searchResultsController.tableView registerNib:musicNib forCellReuseIdentifier:@"MusicCell"];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
self.searchController.searchResultsUpdater = self;
UISearchBar *searchBar = self.searchController.searchBar;
searchBar.scopeButtonTitles = @[@"Album", @"Artist", @"Song"];
searchBar.showsScopeBar = YES;
searchBar.selectedScopeButtonIndex = 0;
searchBar.delegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
但是当我在搜索栏中搜索加载视图时。范围栏不会显示。第二个我在搜索栏中搜索,范围栏显示。发生了什么事?
答案 0 :(得分:1)
试试这个:
searchBarDisplayController.searchBar.showsScopeBar = NO;
searchBarDisplayController.searchBar.scopeButtonTitles = nil;
根据您的评论,将上述代码放在searchDisplayControllerWillBeginSearch:delegate方法中。这应该有用。
答案 1 :(得分:0)
searchController.delegate = self
// in the delegate...
func willPresentSearchController(_ searchController: UISearchController) {
searchController.searchBar.showsScopeBar = true
searchController.searchBar.sizeToFit()
}
func willDismissSearchController(_ searchController: UISearchController) {
searchController.searchBar.showsScopeBar = false
searchController.searchBar.sizeToFit()
}
答案 2 :(得分:-1)
您可以删除searchBar.showsScopeBar = YES;