#import "Search_ViewController.h"

@interface Search_ViewController ()<UITableViewDataSource,UITableViewDelegate,UISearchDisplayDelegate,UISearchBarDelegate>

@property(nonatomic,strong)NSArray*dataArr;//数据源

@property(nonatomic,strong)NSArray*resultsArr;//搜索结果

@property(nonatomic,strong)UISearchBar*search;

@property(nonatomic,strong)UISearchDisplayController* searchPlay;

@property(nonatomic,strong)UITableView*aTableView;

@end

@implementation Search_ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.title=@"搜索";

_dataArr= [[NSArray alloc]initWithObjects:@"aaa",@"abc",@"aqq",@"bdc",@"gcd",@"mnb",@"zzz",nil];

[self createView];

// Do any additional setup after loading the view.

}

- (void) createView

{

_aTableView= [[UITableView alloc]initWithFrame:CGRectMake(0,0,320,480)];

_aTableView.delegate=self;

_aTableView.dataSource=self;

[self.view addSubview:_aTableView];

}

#pragma mark -

#pragma mark UITableViewDelegate

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section

{

_search= [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,320,40)];

_search.backgroundColor= [UIColor redColor];

_search.delegate=self;

_search.showsCancelButton=YES;

_search.keyboardType=UIKeyboardTypeDefault;

_searchPlay= [[UISearchDisplayController alloc]initWithSearchBar:self.search contentsController:self];

_searchPlay.delegate=self;

_searchPlay.searchResultsDataSource=self;

_searchPlay.searchResultsDelegate=self;

_searchPlay.active=NO;

return _searchPlay.searchBar;

}

- (BOOL)searchBarShouldEndEditing:(UISearchBar*)searchBar

{

NSLog(@"取消");

return YES;

}

- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section

{

return  tableView ==self.searchPlay.searchResultsTableView?0:40;

}

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

NSInteger row =0;

if([tableView isEqual:self.searchPlay.searchResultsTableView]) {

row = [self.resultsArr count];

}else{

row = [self.dataArr count];

}

return row;

}

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

{

static NSString *CellIdentifier =@"Cell";

UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(!cell) {

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

}

if([tableView isEqual:self.searchPlay.searchResultsTableView]) {

cell.textLabel.text= [self.resultsArr objectAtIndex:indexPath.row];

}else{

cell.textLabel.text= [self.dataArr objectAtIndex:indexPath.row];

}

return cell;

}

#pragma mark -

#pragma mark UISearchDisplayControllerDelegate

//text是输入的文本,scope是搜索范围

- (void) searchText:(NSString*)text andWithScope:(NSString*)scope

{

//CONTAINS是字符串比较操作符,

NSPredicate*result = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",text];

self.resultsArr= [self.dataArr filteredArrayUsingPredicate:result];

}

- (BOOL) searchDisplayController:(UISearchDisplayController*)controller shouldReloadTableForSearchString:(NSString*)searchString

{

// searchString是输入的文本

//返回结果数据读取搜索范围在选择范围

NSArray*searScope = [self.searchPlay.searchBar scopeButtonTitles];//数组范围

[self searchText:searchString andWithScope:[searScope objectAtIndex:[self.searchPlay.searchBar selectedScopeButtonIndex]]];

return YES;

}

- (BOOL) searchDisplayController:(UISearchDisplayController*)controller shouldReloadTableForSearchScope:(NSInteger)searchOption

{

NSString*inputText =self.searchPlay.searchBar.text;//搜索输入的文本

NSArray*searScope = [self.searchPlay.searchBar scopeButtonTitles];//索索范围

[self searchText:inputText andWithScope:[searScope objectAtIndex:searchOption]];

return YES;

}

模糊搜索UISearchBar的更多相关文章

  1. iOS 如何自定义UISearchBar 中textField的高度

    iOS 如何自定义UISearchBar 中textField的高度 只需设置下边的方法就可以 [_searchBar setSearchFieldBackgroundImage:[UIImage i ...

  2. MySQL中进行模糊搜索的一些问题

    在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用.在 SQL 中,可使用以下通配符:通配符 描述       % 替代一个或多个字符     ...

  3. iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  4. 更改UIsearchbar 的背景和cancel按钮(转)

    修改背景 searchbar =[[UISearchBar alloc]initWithFrame:CGRectMake(,KTopBarHeight, , KTopBarHeight)]; sear ...

  5. UISearchBar控件-让我们来搞定!(转)

    转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101dfg8.html     最近用到搜索功能.于是,经过不断的研究,终于,有点懂了. 那就来总结一下吧,好 ...

  6. 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】

    当我们使用 Google 等搜索功能时,会出现与搜索内容有关的候选项.使用 JavaScript 搜索字符串,通常会使用 indexOf 或者 search 函数,但是非常僵硬,只能搜索匹配特定词语. ...

  7. iOS开发——UI进阶篇(十九)UISearchBar控件简介

    最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...

  8. IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题

    在iOS开发中,使用UISearchBar的时候,当搜索框失去焦点的时候,取消按钮是默认不能点击的,如图按钮的颜色是灰色的:  这是因为此时取消按钮的enabled属性被设置为NO了,那么当我们需要让 ...

  9. 修改UISearchBar的背景颜色

    当你看到这篇博客你就已经发现了用_searchBar.backgroundColor = [UIColor clearColor];来设置UISearchBar的颜色完全没有效果: 并且,有些方法是想 ...

随机推荐

  1. 【BZOJ】1221: [HNOI2001] 软件开发(最小费用最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1221 先吐槽一下,数组依旧开小了RE:在spfa中用了memset和<queue>的版本 ...

  2. 转 sql 时间转换格式 convert(varchar(10),字段名,转换格式)

    convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime, ...

  3. 使用Objective-C的文档生成工具:appledoc

    使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...

  4. 你能不用计算机来计算S=a+(a+1)+(a+2) + ...... + b的解的数目吗?

    S=a + (a + 1) + (a + 2) + ...... + b(其中a, b > 0) 现在我们要求,给定一个正整数S,求有多少种不同的<a,b>,使得上述的等式成立. 这 ...

  5. PHP将在对象被销毁前调用这个函数.它称为析构函数

    -构造函数和析构函数 如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行.清楚地说,__是两个下划线.就像其它任何函数一样,构造函数 ...

  6. PHP对于Session漏洞的防范

    目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...

  7. Servlet 编程 请求的转发

    在上篇的基础上,修改servlet *转发只能在同一应用内转发. 将forward 地址改为:youku.com  不能访问 重定向是可以访问外部应用的

  8. HDU 3639 Bone Collector II(01背包第K优解)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 【转】Windows7系统下硬盘安装全新更高版本Windows7

    原文地址:http://jingyan.baidu.com/article/656db918aee053e381249c06.html 1.下载windows7 7600 ISO镜像(RC或RTM), ...

  10. ie8默认主页/起始页无法修改

    HKEY_CURRENT_USER\Software\Policies\Microsoft 展开Microsoft,查看其下是否包含子项 Internet Explorer? 若有,请删除.这一步应该 ...