ZQSearchController
2018-09-28 本文已影响16人
巫师学徒
ZQSearchController 仿饿了么搜索栏交互,
主要功能
1.搜索主界面、模糊匹配界面,搜索结果界面之前的状态切换。
2.可使用自定义结果界面进行搜索结果的展示。
3.输入内容节流处理,输入完毕后0.5秒后再发生搜索事件。
4.支持搜索历史,
5.支持热门搜索配置
6.顶部已适配iPhoneX或Xs
效果
demo.gif依赖项目
SDWebImage
main
ZQSearchConst
ZQSearchViewController
ZQSearchNormalViewController
ZQSearchEditViewController
如何使用
- git clone 项目,将ZQSearch文件夹拖入项目
使用详情(项目里有demo)
1.初始化ZQSearchController
NSArray *hots = @[@"热门",@"热门热门",@"热门热门热门",@"热门热门",@"热门",@"热门",@"热热门热门热门门"];
UIViewController *resultController = [UIViewController new];
ZQSearchViewController *vc = [[ZQSearchViewController alloc] initSearchViewWithHotDatas:hots resultController:resultController];
vc.delegate = self;
[self.navigationController pushViewController:vc animated:NO];
2.实现代理
- (void)searchEditViewRefreshWithDataBlock:(void (^)(id))block {
//异步调用搜索接口。
将搜索结果通过block回调到searchcontroller内部。
}
//模糊搜索结果列表,显示在传入的resultController
- (void)searchFuzzyResultWithKeyString:(NSString *)keyString Data:(id<ZQSearchData>)data resultController:(UIViewController *)resultController{
//1 搜索关键字
NSLog(@"%@",keyString);
//2 搜索返回数据(需遵守<ZQSearchData>协议,可自行扩展)
NSLog(@"%@",data);
//3 刷新resultController
[resultController reloadData];
}
//精确搜索回调
- (void)searchConfirmResultWithKeyString:(NSString *)keyString Data:(id<ZQSearchData>)data resultController:(UIViewController *)resultController {
//可以将结果自定义处理。
ResultViewController *vc = [ResultViewController new];
[resultController.navigationController pushViewController:vc animated:YES];
}
3.数据模型
搜索结果的对象需遵守ZQSearchData协议。用于显示模糊搜索时的匹配结果UI
@protocol ZQSearchData<NSObject>
@required
@property (nonatomic, copy) NSString *title;
@optional
@property (nonatomic, assign) SearchEditType editType;//1.模糊内容,2.精确内容
@property (nonatomic, copy) NSString *iconUrl;
@property (nonatomic, copy) NSString *desc;
@end
下载地址
https://github.com/rabbitmouse/ZQSearchController.git
感谢
如果你喜欢,可以给我star一下,如果觉得写的不好 也可以留言讨论,或者分享你的看法。