Giter Club home page Giter Club logo

zqsearchcontroller's Introduction

ZQSearchController

仿饿了么搜索栏交互

主要功能

  1. 搜索主界面、模糊匹配界面,搜索结果界面之前的状态切换。
  2. 可使用自定义结果界面进行搜索结果的展示。
  3. 输入内容节流处理,输入完毕后 0.5 秒后再发生搜索事件。
  4. 支持搜索历史,
  5. 支持热门搜索配置
  6. 顶部已适配iPhoneX 或 Xs

效果

demo

依赖项目

SDWebImage

版本要求

  • iOS9.0或更高

main

  • ZQSearchConst
  • ZQSearchViewController
  • ZQSearchNormalViewController
  • ZQSearchEditViewController

如何使用

  • Use CocoaPods:
    • pod 'ZQSearch', '~> 0.1.9'
    • #import <ZQSearchViewController.h>
  • Manual import:
    • git clone project
    • 将ZQSearch文件夹拖入项目
    • #import "ZQSearchViewController.h"
使用详情(项目里有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)searchEditViewRefreshWithKeyString:(NSString *)keyString DataBlock:(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

感谢

如果你喜欢,可以给我star一下,如果觉得写的不好 也可以留言讨论,或者分享你的看法。

zqsearchcontroller's People

Contributors

geekdmm0xff avatar rabbitmouse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

zqsearchcontroller's Issues

模拟器没跑起来

这是报错

Showing Recent Messages
👎 Multiple commands produce '/Users/sy_sprint/Library/Developer/Xcode/DerivedData/ZQSearchController-esmmuwaxuxoyktdeohrlueaxckmr/Build/Products/Debug-iphonesimulator/ZQSearchController.app/Info.plist':

  1. Target 'ZQSearchController' (project 'ZQSearchController') has copy command from '/Users/sy_sprint/Downloads/ZQSearchController-master/Example/Info.plist' to '/Users/sy_sprint/Library/Developer/Xcode/DerivedData/ZQSearchController-esmmuwaxuxoyktdeohrlueaxckmr/Build/Products/Debug-iphonesimulator/ZQSearchController.app/Info.plist'
  2. Target 'ZQSearchController' (project 'ZQSearchController') has process command with output '/Users/sy_sprint/Library/Developer/Xcode/DerivedData/ZQSearchController-esmmuwaxuxoyktdeohrlueaxckmr/Build/Products/Debug-iphonesimulator/ZQSearchController.app/Info.plist'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.