12rd,Jan,2016
打算实现一个带搜索的tableView,使用UISearchDisplayController时提示'UISearchDisplayerController' is deprecated. UISearchDisplayContrller has been replaced with UISearchController.所以本文将会通过两种方法实现改功能:
1. UISearchDisplayerController :实现iOS8以前的版本
2. UISearchController: 实现iOS8以后的版本
1.UISearchDisplayController
1)首先拖一个Search Bar and Search Display Controller到tableView上面,拖进去之后点击查看Search Display Controller观察到该对象的绑定情况。
2) 实现代理:
UISearchDisplayDelegate,UISearchBarDelegate
3)声明数据存储变量&&初始化数据:
NSArray *chatList; NSArray *resultList;
4)然后实现tableView的代理方法:numberOfScetionsInTableView, numberOfRowsInSection,cellForRowAtIndexPath 。分为两种情况,一种情况是默认显示的数据,一种是搜索结果要显示的数据(tableView == self.searchDisplayController.searchResultsTableView)
5)实现UISearchDisplayDelegate中的委托方法: 通过谓词方法过滤数据()
2. UISearchController
1) 实现代理:
UISearchResultsUpdating
2) 声明数据存储变量&&初始化数据:
NSMutableArray *chatList; NSMutableArray *resultList;
@property (nonatomic, strong) UISearchController *searchController;
3) 初始化searchController:
4) 实现tableView的代理方法:numberOfScetionsInTableView, numberOfRowsInSection,cellForRowAtIndexPath 。分为两种情况,一种情况是默认显示的数据,一种是搜索结果要显示的数据。判断方法self.searchController.active 为真则是搜索结果的情况。
5)实现UISearchResultsUpdating的代理方法:
updateSearchResultsForSearchController即可
参考文献: