代码创建UISearchDisplayCountroller

北战南征 提交于 2020-04-17 04:26:22

【推荐阅读】微服务还能火多久?>>>

在Interface Builder里面有一个控件叫Search Bar and Search Display controller

可以实现如地图搜索框,联系人中的搜索框之类的动态效果,很漂亮

搜索框下面会出现搜索历史,segment切换

但是只发现了在xib文件中的添加方式,没有coding的方式

之所以说不能用coding的方式创建UISearchDisplayController,是因为UISearchDisplayCountroller必须包含在UIViewController中,与之想关联,才能出现动态效果

而且在UIViewController中的属性

@property(nonatomic, readonly, retain) UISearchDisplayController *searchDisplayController;
因为此属性是readonly的,所以我们无法修改.

后来无意间看到DocSets的源码 https://github.com/omz/DocSets-for-iOS

发现他也用了Search Bar and Search Display controller控件

但是他没用xib来实现

下面我们一起学习一下

首先我们的VC继承于UIViewController

然后在.h文件中添加属性

@property(nonatomic, retain) UISearchDisplayController *searchDisplayController;
去掉 readonly

在.m文件会报错

因为Property 'searchDisplayController' attempting to use instance variable '_searchDisplayController' declared in super class 'UIViewController'

我们加入

@synthesize searchDisplayController;

问题消失,然后我们在viewDidLoad:中创建UISearchDisplayController,添加如下代码

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchBar.delegate = self;
[self.view addSubview:searchBar];
self.searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
self.searchDisplayController.delegate = self;
这样 UISearchDisplayController就简单的创建完成了,其他的数据操作就可以直接看Apple API来操作了

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!