您可以UISearchController
在iOS 9中使用
首先声明一个属性 UISearchController
@property (strong, nonatomic) UISearchController *searchController;
然后,在 viewDidLoad
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; self.searchController.searchResultsUpdater = self; self.searchController.dimsBackgroundDuringPresentation = NO; self.searchController.searchBar.delegate = self;
在创建时,UISearchController
我们不需要单独的搜索结果控制器,因为我们将使用它UITableViewController
自己.同样,我们也将使用UITableViewController
它来实现UISearchResultsUpdating
协议来更新搜索结果.我们不希望调暗基础内容,因为我们希望在用户键入搜索栏时显示过滤结果.该UISearchController
负责创建我们的搜索栏的照顾.该UITableViewController
也将作为搜索栏委托当用户改变搜索范围为.
接下来,添加searchBar
到tableview标头
self.tableView.tableHeaderView = self.searchController.searchBar;
由于搜索视图在活动时覆盖了表视图,因此我们UITableViewController
定义了表示上下文:
self.definesPresentationContext = YES;
我们需要实现UISearchResultsUpdating
委托,以便在搜索文本发生变化时生成新的过滤结果:
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController { NSString *searchString = searchController.searchBar.text; [self searchForText:searchString scope:searchController.searchBar.selectedScopeButtonIndex]; [self.tableView reloadData]; }