使用UISearchController 实现搜索框

来源:互联网 发布:硝酸甘油软膏 知乎 编辑:程序博客网 时间:2024/05/16 15:57

  在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 0
原创粉丝点击