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

使用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开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,120评论 3 38
  • iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)text...
    爱易寒曲易散阅读 644评论 0 1
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,817评论 1 9
  • { 24、Sqlite数据库 1、存储大数据量,增删改查,常见管理系统:Oracle、MSSQLServer、DB...
    CYC666阅读 1,005评论 0 1
  • 我可能是全世界最没有自控力的人之一。一个最好的例证是几年前我为了提高自己的自控力,特地买了两本书,《自控力》和《意...
    小麦哥阅读 204评论 0 0