模糊搜索UISearchBar
#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的更多相关文章
- iOS 如何自定义UISearchBar 中textField的高度
iOS 如何自定义UISearchBar 中textField的高度 只需设置下边的方法就可以 [_searchBar setSearchFieldBackgroundImage:[UIImage i ...
- MySQL中进行模糊搜索的一些问题
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符.SQL 通配符必须与 LIKE 运算符一起使用.在 SQL 中,可使用以下通配符:通配符 描述 % 替代一个或多个字符 ...
- iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)
在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...
- 更改UIsearchbar 的背景和cancel按钮(转)
修改背景 searchbar =[[UISearchBar alloc]initWithFrame:CGRectMake(,KTopBarHeight, , KTopBarHeight)]; sear ...
- UISearchBar控件-让我们来搞定!(转)
转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101dfg8.html 最近用到搜索功能.于是,经过不断的研究,终于,有点懂了. 那就来总结一下吧,好 ...
- 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】
当我们使用 Google 等搜索功能时,会出现与搜索内容有关的候选项.使用 JavaScript 搜索字符串,通常会使用 indexOf 或者 search 函数,但是非常僵硬,只能搜索匹配特定词语. ...
- iOS开发——UI进阶篇(十九)UISearchBar控件简介
最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...
- IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题
在iOS开发中,使用UISearchBar的时候,当搜索框失去焦点的时候,取消按钮是默认不能点击的,如图按钮的颜色是灰色的: 这是因为此时取消按钮的enabled属性被设置为NO了,那么当我们需要让 ...
- 修改UISearchBar的背景颜色
当你看到这篇博客你就已经发现了用_searchBar.backgroundColor = [UIColor clearColor];来设置UISearchBar的颜色完全没有效果: 并且,有些方法是想 ...
随机推荐
- JS设计模式一:单例模式
单例模式 单例模式也称作为单子模式,更多的也叫做单体模式.为软件设计中较为简单但是最为常用的一种设计模式. 下面是维基百科对单例模式的介绍: 在应用单例模式时,生成单例 ...
- Codeforces Round #204 (Div. 2) A.Jeff and Digits
因为数字只含有5或0,如果要被90整除的话必须含有0,否则输出-1 如果含有0的话,就只需考虑组合的数字之和是9的倍数,只需要看最大的5的个数能否被9整数 #include <iostream& ...
- 【BZOJ】2820: YY的GCD(莫比乌斯)
http://www.lydsy.com/JudgeOnline/problem.php?id=2820 此题非常神! 下文中均默认n<m 首先根据bzoj1101的推理,我们易得对于一个数d使 ...
- 一个简单的SqlServer游标使用
declare @id int ) declare c_department cursor for select id,name from department open c_department f ...
- JS实现上下左右四方向无间隙滚动
想必大家都注意到<marquee>的不循环滚动,所以出现了很多替代脚本,或iframe或JS输出< marquee>,不管怎么做,都略显麻烦.下面说一下这个相对简单的实现思路: ...
- JS function的参数问题
1.当传入的参数个数小于声明的参数个数时,缺少的参数值就是:undefined 类似方法重载 var f1 = function(p1,p2,p3){ switch(arguments.len ...
- Java递归搜索指定文件夹下的匹配文件
import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Queue; /** ...
- JBPM4.4学习API
一.流程引擎API org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源. 既所有的Service API(服务接口)都从ProcessEngine中获取 ...
- DNS服务器的配置与应用: BIND9 的安装与配置
3. BIND9 的安装与配置 3.1 bind简介 BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了 ...
- JavaScript编码规范[百度]
JavaScript编码规范 1 前言 2 代码风格 2.1 文件 2.2 结构 2.2.1 缩进 2.2.2 空格 2.2.3 换行 2.2.4 语句 2.3 命名 ...