1.iOS搜索功能的实现
1)搜索功能的实现比较简单,只需要一个总的接口,然后拿到搜索框内的内容拼接到接口后面,再去请求数据即可
搜索UISearchController需要两个控制器
如下图
第一个是没有编辑的时候需要一个控制器,第二个是在编辑的时候需要的一个控制器,用来展示搜索到的内容
代码如下:
//加载搜索到得页面
WZ_SearchView *resultTVC = [[WZ_SearchView alloc]init];
self.searchC = [[UISearchController alloc] initWithSearchResultsController:resultTVC];
self.searchC.searchResultsUpdater = resultTVC;
[self.searchC.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchC.searchBar;
2)把它搞定之后,就需要搞展示的数据了,还是在一个工具类里面
-(void)addText:(NSString *)text{
dispatch_async(dispatch_get_main_queue(), ^{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:text,@"keywords",
@"1",@"page",
nil];
//POST 请求数据
[manager POST:@"http://baozouribao.com/api/v1/articles/search" parameters:dic success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) {
//请求成功后
// NSLog(@"%@",responseObject);
// NSDictionary *dic = responseObject;
NSDictionary *dictory = responseObject;
//创建模型
self.array = [[NSMutableArray alloc] initWithCapacity:10];
for (NSDictionary *dics in [dictory objectForKey:@"articles"]) {
WZ_searchModol *popMusic = [WZ_searchModol new];
[popMusic setValuesForKeysWithDictionary:dics];
[self.array addObject:popMusic];
}
dispatch_async(dispatch_get_main_queue(), ^{
if (self.block) {
self.block();
}
});
} failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error) {
NSLog(@"错误%@",error);
}];
});
}
3)把数据拿到之后展示就特别简单了,只需要在第二控制器里加载页面就行了
4)运行看效果