您的位置:首页 > 移动开发 > IOS开发

iOS搜索框

2015-11-30 12:46 513 查看
//创建用于展示搜索结果的表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];


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: