UISearchController简单使用

在实际开发中经常会用到搜索,一般的搜索用UISearchBar就可以解决,但是如果要求随着输入信息的改变,SearchBar下面有个UITableview自动更新显示搜索结果,这时就需要用到苹果高度封装好的一个控件UISearchController,使用效果如下:

显示.PNG

搜索.PNG

在UISearchController文件中,我们可以看到只提供了一个初始化的方法

-(instancetype)initWithSearchResultsController:(nullable UIViewController *)searchResultsController

此方法要求我们提供一个显示搜索结果的UIViewController,如果我们提供了显示结果的一个UIViewController,就会自动帮我们弹出一个界面添加到屏幕最上方;如果不提供UIViewController,直接传nil,就不会有新页面弹出。

1. 初始化UISearchController

初始化一个UISearchController对象,传入展示搜索结果的HTSearchResultVC。

HTSearchResultVC *searchTVC = [[HTSearchResultVC alloc] init];
    searchTVC.delegate = self;
 UISearchController   *searchVC = [[UISearchController alloc] initWithSearchResultsController:searchTVC];

2. 设置placeholder

searchVC.searchBar.placeholder = @"输入企业名称搜索";

3.设置搜索内容改变时通知代理:

searchVC.searchResultsUpdater = self;

4. 实现searchResultsUpdater 代理方法

在代理方法中获取搜索的关键字, 通过关键字发送数据请求。
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
// 获取输入的搜索关键字
NSString *searchString = searchVC.searchBar.text;
// 拿此关键字去发请求,从后台获取相关的信息
}

5. 将请求数据给负责数据展示的searchResultsController

请求成功后将获取到的后台数据requestResultArr传给负责数据展示的HTSearchResultVC

 HTSearchResultVC *resultVC =(HTSearchResultVC *) searchVC.searchResultsController;
 resultVC.resultArr = requestResultArr;
 [resultVC.tbView reloadData];

你可能感兴趣的:(UISearchController简单使用)