其实是个非常简单的一个方法,还以为很复杂
先创建一个searchBar
//创建一个search bar
self.searchBar =[[UISearchBar alloc]init];
self.searchBar.delegate =self;
[self.view addSubview:self.searchBar];
[self.searchBar setFrame:CGRectMake(0, 62, 320, 34)];
然后调用一个可以实时监测 文本框的 方法
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;{
NSLog(@"textDidChange%@",searchBar.text);
//添加一个谓词
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"self contains [cd] %@",self.searchBar.text];
NSArray *results = [[NSArray alloc]initWithArray:[self.dataList filteredArrayUsingPredicate:predicate] ];
[self.dataList removeAllObjects];
[self.dataList addObjectsFromArray:results];
NSLog(@"%@",self.dataList);
[self.tableView reloadData];
// 当搜索框被清除时,重新刷新这个列表
if ([self.searchBar.text isEqual:@""]) {
[self.dataList addObjectsFromArray:self.cityName];
[self.tableView reloadData];
}
}