使用UISearchController 实现搜索框

  在iOS8.0之后UISearchDisplayController 终于退出了历史舞台,apple进而推出了新的搜索方法

UISearchController 我们该如何  使用他呢

话不多说,直接看代码

首先  我们创建ViewController类

属性

@property (nonatomic, strong)UISearchController *searchController;
@property (nonatomic, strong)UITableView *titleTableView;
@property (nonatomic, strong)NSMutableArray *filterArray;
@property (nonatomic, strong)NSMutableArray *visableArray;//用来存储页面上面将要显示的数据
@property (nonatomic, strong)NSMutableArray *dataSourceArray;//搜索提醒的时候使用

初始化搜索框

- (void)initWithSearchController
{
    self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.searchBar.placeholder = @"搜索";
    [self.searchController.searchBar sizeToFit];
    self.searchController.searchResultsUpdater = self;

   //将searchBar添加到tableViewHeader上面

    self.titleTableView.tableHeaderView = self.searchController.searchBar;
}
//取得数据
- (void)initDataSource
{
    self.dataSourceArray = [NSMutableArray array];
    self.visableArray = [NSMutableArray array];
    for (int i = 0; i < 26; i ++) {
        for (int j = 0; j < 4; j ++) {
            NSString *str = [NSString stringWithFormat:@"%c%d", 'A' + i, j];
            [self.dataSourceArray addObject:str];
        }
    }
}

#pramark -- mark  UISearchControllerDelegate
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{

    //此处的数据也是自己写的 只是为了说明问题

    NSString *filter = searchController.searchBar.text;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [c] %@", filter];
    self.visableArray = [NSMutableArray arrayWithArray:[self.dataSourceArray filteredArrayUsingPredicate:predicate]];
    [self.titleTableView reloadData];

}

到此为止  一个简单的searchBar就完成了,并且带有提醒输入关键字的功能  ,至于如何将Cancel转化为中文,只需要在plist 文件里面修改就可以了!!! 小弟代码如果有不足之处  请各位不吝赐教,让我们共同进步,thank you!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值