iOS8之前我们使用UISearchDisplayController做TableView的本地搜索

iOS8提供实现搜索功能的SDK:UISearchController(iOS8.0之后)、UISearchDisplayController(iOS8.0之前,iOS8.0之后不建议再使用)。

遵守UISearchResultsUpdating协议

 @interface ZWRecommendationFocusViewController()<UISearchResultsUpdating>
@property (strong, nonatomic) NSArray *list;
@property (strong, nonatomic) NSMutableArray *searchList;
@property (strong, nonatomic)UISearchController *searchController;
@end
 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return (!self.searchController.active)?:;
} -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return (!self.searchController.active)?self.list.count:self.searchList.count;
} -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ZWFocusList *list=(!self.searchController.active)?self.list[indexPath.row]:self.searchList[indexPath.row];
static NSString *identifier = @"cell";
ZWFocusListTableViewCell *cell = [ZWFocusListTableViewCell cellWithTableView:tableView identifier:identifier];
cell.list = list;
return cell;
}
 /**
* UISearchController作为UITableView的tableHeaderView
*/
-(void)addSearchBar
{
//创建UISearchController对象
UISearchController *searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
//是否添加半透明覆盖层。为YES,搜索时,背景会变暗(背景变模糊)。默认为YES
searchController.dimsBackgroundDuringPresentation = NO;
//是否隐藏导航栏。为YES,搜索时,UINavigationBar会隐藏。默认为YES
searchController.hidesNavigationBarDuringPresentation = YES;
//NO表示UISearchController在present时,可以覆盖当前controller。默认为NO
searchController.definesPresentationContext = NO;
//搜索栏表头视图
self.tableView.tableHeaderView = searchController.searchBar; [searchController.searchBar sizeToFit];
searchController.searchResultsUpdater = self; searchController.searchBar.placeholder=@"请输入名称或者数字";
searchController.searchBar.autocapitalizationType=UITextAutocapitalizationTypeNone;
// searchController.searchBar.showsCancelButton=YES;//显示取消按钮
//自适应
[searchController.searchBar sizeToFit];
// searchController.searchBar.frame = CGRectMake(0, 0, 0, 44);
// searchController.searchBar.prompt=@"请输入关键字";
self.searchController = searchController;
}
 - (void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSString *searchString = self.searchController.searchBar.text;
//NSPredicate 谓词
NSPredicate *preicate = [NSPredicate predicateWithFormat:@"theme_name LIKE[c] %@", searchString];
if (self.searchList!= nil) {
[self.searchList removeAllObjects];
}
//过滤数据
self.searchList= [NSMutableArray arrayWithArray:[self.list filteredArrayUsingPredicate:preicate]];
//刷新表格
[self.tableView reloadData];
}

最新文章

  1. java并发编程:阻塞队列
  2. Lisp与JAVA的酷毙结合——abcl
  3. 11.12 noip模拟试题
  4. 在公网上布署Web Api的时候,不能调用,返回404
  5. AOP-----动态代理(转)
  6. [其他]Android SDK离线文件路径以及安装更新方法
  7. 数据库-增删改查操作SQL实现
  8. 这是对position讲解最通俗易懂的版本了。
  9. .Net 中通用的FormatString格式符整理
  10. numpy元素级数组函数
  11. 【转】ETL介绍与ETL工具比较
  12. MATLAB数据类型
  13. testng入门教程4用TestNG执行case
  14. Linux服务器部署系列之三—DNS篇
  15. C语言学习之路之基础变量
  16. ES6框架的搭建
  17. 为什么JS中0.1+0.2 != 0.3
  18. CodeForces 289A Polo the Penguin and Segments (水题)
  19. 本地如何将svn和git管理的代码做关联
  20. JavaScript 中的不可变对象(Immutable Objects)

热门文章

  1. 【腾讯GAD暑期训练营游戏程序班】游戏中的设计模式作业说明文档
  2. jquery submit() 提交失败
  3. LCS问题
  4. IEEE 754 浮点数机器表示标准
  5. getGlobalVisibleRect和getLocalVisibleRect
  6. Wireshark基本介绍和学习TCP三次握手
  7. js鼠标事件大全
  8. Pyhont-Urllib
  9. js base64加密,后台解密
  10. UI: 标题栏