美文网首页
解决iOS搜索框激活后可能消失的问题

解决iOS搜索框激活后可能消失的问题

作者: __新宝__ | 来源:发表于2017-02-10 10:47 被阅读0次

使用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)效果图如下:

很多不足之处,大家对付看吧就,😆

相关文章

网友评论

      本文标题:解决iOS搜索框激活后可能消失的问题

      本文链接:https://www.haomeiwen.com/subject/aklwittx.html