iOS搜索框

//创建用于展示搜索结果的表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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值