UISearchController
创建显示的页面
SearchViewController * searchVC = [[SearchViewController alloc]init];
告诉搜索控制器将结果显示在创建的页面上
self.searchController = [[UISearchController alloc]initWithSearchResultsController:searchVC];
由谁来监听搜索内容发生的事件
self.searchController.searchResultsUpdater = self;
在tableview上方显示searchbar
self.MyTableView.tableHeaderView = _searchController.searchBar;
设置提供显示新页面
self.searchController.definesPresentationContext= YES;
<UISearchResultsUpdating>
代理方法
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
设置查找条件
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchController.searchBar.text];
过滤出结果
NSArray * results = [_dataSourceArray filteredArrayUsingPredicate:predicate];
找到应显示的结果位置searchResultsController
SearchViewController *sResultCtrl = (SearchViewController *)_searchController.searchResultsController;
设置数据源
sResultCtrl.dataSourceArray = results;
}
结果类 SearchViewController 中
- (void)setDataSourceArray:(NSArray *)dataSourceArray{
_dataSourceArray = dataSourceArray;
刷新列表
[self.myTableView reloadData];
}