在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!!!