使用UISearchController遇到的问题
1.首先说一下怎样将searchBar添加到tableview上
(1)先遵循这两个协议UISearchResultsUpdating,UISearchControllerDelegate,创建 tableView 的时候,设置了 tableHeaderView,然后把 searchController 添加到了 headerView 上,如下代码:
(2)下面是设置 searchController 的代码,我自己封装了一个类方法,放到Package里面,用的时候可以直接使用类名调用(标注:本宝宝将系统自带的搜索框样式改掉了),如下代码:
(3)如上写完之后,发现搜索框激活的时候,会直接从searchController中偏移不见,解决代码如下:
在创建searchController的地方加上这两句就OK
self.definesPresentationContext = YES;
self.extendedLayoutIncludesOpaqueBars = YES;
(4)再介绍下tableview的协议里面怎么写吧
如果你有写-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section这个方法的话,如下代码:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *view;
if (!self.searchController.active) {
这里写你想要实现的view
}else{
view = nil;
}
return view;
}
在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath这个方法中,如下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (!self.searchController.active) {
这里写原始页面的cell形式}
else{
这里写搜索控制器中的cell形式,不要忘记,都要返回cell哦!}}
总结下来就是在使用searchController的时候要记得判断self.searchController.active是否活跃状态
(5)效果图如下:
很多不足之处,大家对付看吧就,😆