之前写了一篇用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
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColorwhiteColor];
// 创建searchBar
self.bar=[[UISearchBaralloc]init];
self.navigationItem.title =@"搜索漫画";
//设置bar的frame
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;
}
// 当开始编辑,即使是空,也触发
- (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;
}
// 当搜索框的内容改变,即使是空
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
// 接收输入的内容
self.inputText =self.bar.text;
self.view1.hidden =NO;
// 调用数据请求方法, 接口参数传入self.inputText;
[selfdd];
NSLog(@"input :%@",self.inputText);
}
// 搜索请求
- (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];
}];
}
// 设置搜索tableView section个数
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
// 设置搜索tableView的cell
- (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;
}
- (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
{
// 点击搜索结果跳转操作
}
- (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];
}
4. 点击取消按钮