不用UIsearchController实现搜索功能

之前写了一篇用UIsearchController实现搜索功能, 但是万一我们不想用呢, 毕竟UIsearchController只能在IOS8以上运行, 低版本会Crash,下面介绍一下不用它的情况下,实现搜索功能, 其实也很简单,用searchBar + tableView就可以了

1.搜索页面.h文件

//

//  SearchViewController.h

//  搜索界面

#import <UIKit/UIKit.h>

#import "AFNetworking.h"

@interface SearchViewController :UIViewController<UISearchBarDelegate,UITableViewDataSource, UITableViewDelegate>

// mySearchController

@property (nonatomic,retain) UISearchController *mySearchController;

// 存放搜索出结果的数组

@property (nonatomic,retain) NSMutableArray *searchResultDataArray;

// searchBar

@property (nonatomic,retain) UISearchBar *bar;

// 搜索框输入的东西

@property (nonatomic,copy) NSString *inputText;

// 显示搜索结果的tableView

@property (nonatomic,retain) UITableView *myTableView;

// 放tableView的View

@property (nonatomic,retain) UIView *view1;


@end


2.搜索页面.m文件
(1) 创建searchBar

- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

     self.view.backgroundColor = [UIColorwhiteColor];

    // 创建searchBar

   self.bar=[[UISearchBaralloc]init];

    self.navigationItem.title =@"搜索漫画";

    

    //设置barframe

   self.bar.frame=CGRectMake(0,64, FRAME.size.width,35);

    [self.viewaddSubview:self.bar];

    self.bar.placeholder = @"漫画名/作者/类型";

    // 设置键盘类型

    self.bar.keyboardType = UIKeyboardTypeNamePhonePad;

    // searchBar  代理

   self.bar.delegate =self;


        

}


(2)  点击searchBar后, UISearchBar的代理方法

// 当开始编辑,即使是空,也触发

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

{

// 创建一个View1

    self.view1 = [[UIViewalloc] initWithFrame:CGRectMake(0,50, self.view.frame.size.width,self.view.frame.size.height)];

// 创建一个放搜索结果的tableView

   self.myTableView = [[UITableViewalloc] initWithFrame:self.view1.frame];

// 把tableView放在view1上

    [self.view1addSubview:self.myTableView];

// View上放View1

    [self.viewaddSubview:self.view1];

    [self.viewbringSubviewToFront:self.bar];

    // 先不让View1显示, 否则会挡住搜索界面

   self.view1.hidden =NO;

    self.myTableView.dataSource =self;

    self.myTableView.delegate =self;

}


(3) 开始搜索,输入内容

// 当搜索框的内容改变,即使是空

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

{

// 接收输入的内容

    self.inputText =self.bar.text;

   self.view1.hidden =NO;

// 调用数据请求方法, 接口参数传入self.inputText;

    [selfdd];

    NSLog(@"input :%@",self.inputText);

    

}


(4) 开始数据请求,并且解析(用系统工具请求)

// 搜索请求

- (void)dd

{

    //  NSLog(@"post 异步");

    NSString *url_string = [NSStringstringWithFormat:@"http://aaaaaa?name=%@&type=2",self.inputText];

    NSString *url = [url_stringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

   NSURL *url1 = [NSURLURLWithString:url];

    NSMutableURLRequest *request1 = [NSMutableURLRequestrequestWithURL:url1];

    // post 异步请求 block

    // 参数1.request对象

    // 参数2.多线程队列NSOperationQueue对象

    [NSURLConnectionsendAsynchronousRequest:request1 queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {

       NSLog(@"ssssss%@", response);

#pragma mark -- 遇到block 一定是回调回来的参数就是你要的数据

        NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:dataoptions:0error:nil];

        // NSMutableDictionary *dic = [NSMutableDictionary dictionary];

        // dic = responseObject;

       NSLog(@"嘎嘎嘎嘎嘎嘎个%@", dic);

        

        self.searchResultDataArray = [NSMutableArrayarray];

       NSMutableDictionary *dic1 = [dic objectForKey:@"info"];

       NSMutableDictionary *dic2 = [dic1 objectForKey:@"data"];

       NSMutableArray *array = [dic2 objectForKey:@"items"];

       for (NSMutableDictionary *dicin array) {

           Comicslist *comics = [[Comicslistalloc] init];

            comics.bigbook_id = [NSStringstringWithFormat:@"%@", [dicobjectForKey:@"id"]];

            comics.bigbook_name = [dicobjectForKey:@"name"];

            comics.bigbook_author = [dicobjectForKey:@"author"];

            comics.coverurl = [dicobjectForKey:@"coverurl"];

            // NSString *key = [dic objectForKey:@"key_name"];

            // comics.key_name = [NSString stringWithFormat:@"%@%@",comics.bigbook_name, comics.bigbook_author];

            [self.searchResultDataArrayaddObject:comics];

        }

        [self.myTableViewreloadData];

    }];

    

    

}


(5)既然请求下了数据,那么设置tableView吧

// 设置搜索tableView section个数

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

{

   return 1;

}


// 设置搜索tableViewcell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

   static NSString *cellIdentifier =@"indenfy";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

   if (cell == nil) {

        cell = [[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellIdentifier];

    }

// 如果有搜索的内容, 显示搜索结果

    if (self.searchResultDataArray.count != 0) {

       Comicslist *comics = [self.searchResultDataArrayobjectAtIndex:indexPath.row];

        cell.textLabel.text = comics.bigbook_name;

       NSString *str = comics.coverurl;

       NSURL *url = [NSURLURLWithString:str];

        UIImage *image = [UIImageimageWithData:[NSDatadataWithContentsOfURL:url]];

        

        cell.imageView.image = image;

        

    }

// 如果没有搜索结果的话, 提示没有查找的内容

   else{

        cell.textLabel.text =@"没有查找的内容";

        cell.imageView.image =nil;

    }

    

   return cell;

}


// 设置cell高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

   return 100;

}


// 设置搜索tableView cell个数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

// 如果没有查找到数据, 返回一行

    if (_searchResultDataArray.count ==0) {

       NSLog(@"33333");

       return 1;

    }

// 如果有查找到东西, 显示个数为查找到得个数

    return_searchResultDataArray.count;

}




// 设置搜索tableView 点击进入搜索结果

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

   // 点击搜索结果跳转操作

}


( 6) 细节处理
// 点击键盘的search按钮,再请求一遍数据

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

{

    [selfdd];

}


// 当界面要显示的时候

- (void)viewWillAppear:(BOOL)animated

{

   self.view1.hidden =YES;

// 回收键盘

    [self.barresignFirstResponder];

   

}


// 取消按钮触发方法

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

{

   self.bar.text =nil;

   self.view1.hidden =YES;

// 回收键盘

    [self.barresignFirstResponder];

}


下面看一下运行结果

1. 进入搜索界面



2. 点击触发




3. 输入内容






4. 点击取消按钮



Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值