iOS搜索框
作者:互联网
原文链接:https://my.oschina.net/zyboy/blog/617419
//创建用于展示搜索结果的表vc实例
self.showResultVC = [[ShowResultTableViewController alloc]init];
//创建搜索控制器的实例
self.searchController = [[UISearchController alloc]initWithSearchResultsController:self.showResultVC];
//设置搜索条的尺寸为自适应
[self.searchController.searchBar sizeToFit];
//设置搜索条中的分段类别
self.searchController.searchBar.scopeButtonTitles = @[@"设备",@"软件",@"其他"];
//为当前表头视图添加searchBar
self.tableView.tableHeaderView = self.searchController.searchBar;
//设置搜索控制器的结果更新代理对象
self.searchController.searchResultsUpdater = self;
//允许当前界面上切换展示数据的上下文对象
//此属性设置为yes,才能在当前界面上切换
//由另一个表视图来显示搜索结果
self.definesPresentationContext = YES;
//为了点击seacherBar上的类别按钮时,也能立即响应
//所以需要设置searchBar的代理
self.searchController.searchBar.delegate = self;
pragma mark - UISearchBarDelegate协议
-(void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope
{
[self updateSearchResultsForSearchController:self.searchController];
}
pragma mark - UISearchrResultUpdating协议
//只要用户在文本框中输入的搜索文本发生变化
//则自动执行此方法
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
//根据用户输入的文字,逐一比对商品信息
//将商品信息显示到展示结果的vc中
//从searchBar中获取用户在文本框中输入的文字
NSString *searchText = searchController.searchBar.text;
//获取用户选择的类别按钮
NSInteger selectedButtonIndex = searchController.searchBar.selectedScopeButtonIndex;
//到self.allProducts中逐一比对数据
NSMutableArray *resultArray = [NSMutableArray array];
for (Product *p in self.allProducts) {
//判断商品名种包含输入的搜索文本的范围
//@"abcdefg" @"def"
//length:3 location:3
NSRange range = [p.name rangeOfString:searchText];
//如果名称匹配,且类别相同
//则将此商品记录到结果数组中
if (range.length>0 && p.type==selectedButtonIndex) {
[resultArray addObject:p];
}
}
//将要展示的数据结果 给showResultVC传过去
self.showResultVC.resultArray = resultArray;
//更新视图显示数据
[self.showResultVC.tableView reloadData];
}
转载于:https://my.oschina.net/zyboy/blog/617419
标签:searchController,self,iOS,resultArray,搜索,showResultVC,searchBar 来源: https://blog.csdn.net/chunbo4007/article/details/100677723