1.第一步 构建searchBar
_searchBar = [[EMSearchBar alloc] initWithFrame: CGRectMake(0,0, self.view.frame.size.width, 44)];
_searchBar.delegate = self;
_searchBar.placeholder = NSLocalizedString(@"search", @"Search");
_searchBar.backgroundColor = [UIColor colorWithRed:0.747 green:0.756 blue:0.751 alpha:1.000];
tableV.tableHeaderView = _searchBar;
2.第二步 构建控制器 继承代理<UISearchDisplayDelegate,UISearchBarDelegate>
_searchController = [[UISearchDisplayController alloc]initWithSearchBar:_searchBar contentsController:self];
_searchController.searchResultsDataSource = self;
_searchController.searchResultsDelegate = self;
_searchController.searchResultsTableView.allowsMultipleSelection = YES;
_searchController.delegate = self;
3.第三部 代理方法里 过滤数据
#pragma mark - UISearchDisplayDelegate
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"self.memberName contains [cd] %@", controller.searchBar.text];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"self.pinyinString contains [cd] %@", controller.searchBar.text];
NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicate1, predicate2]];
if (searchModelArr != nil) {
[searchModelArr removeAllObjects];
}
//过滤数据
NSArray *tempArray = [modelArr filteredArrayUsingPredicate:predicate];
[searchModelArr addObjectsFromArray:tempArray];
//刷新表格
return YES;
}
4.第四步 在tableVew 代理方法里记得判断 然后取不同的数据源