SearchController + 中英关联搜索
来源:互联网 发布:天财商龙餐饮软件下载 编辑:程序博客网 时间:2024/05/19 03:20
一共有两个tableview 一个用于显示列表数据 ,,一个用于显示搜索结果的列表数据
下面展示的是部分代码,,,完整的看demo
//// 创建显示所有数据的tableview
self.skTableView =[[UITableViewalloc]initWithFrame:CGRectMake(0,0,[UIScreen mainScreen].bounds.size.width ,[UIScreen mainScreen].bounds.size.height)];
//// 创建显示搜搜结果的tableview
self.resultTableView =[[UITableViewalloc]initWithFrame:CGRectMake(0,64,[UIScreen mainScreen].bounds.size.width ,[UIScreen mainScreen].bounds.size.height-64)];
self.skTableView.delegate = self;
self.skTableView.dataSource = self;
self.resultTableView.delegate = self;
self.resultTableView.dataSource = self;
//隐藏tableViewCell下划线
// self.skTableView.separatorStyle = UITableViewCellSelectionStyleNone;
//创建UISearchController
self.searchController = [[UISearchControlleralloc]initWithSearchResultsController:nil];
//设置代理
self.searchController.delegate=self;
self.searchController.searchResultsUpdater = self;
//包着搜索框外层的颜色
self.searchController.searchBar.barTintColor = [UIColorcolorWithRed:0.87green:0.87blue:0.87alpha:1.00];
//提醒字眼
self.searchController.searchBar.placeholder=@"请输入关键字搜索";
//设置UISearchController的显示属性,以下3个属性默认为YES
//搜索时,背景变暗色
self.searchController.dimsBackgroundDuringPresentation = YES;
//搜索时,背景变模糊
self.searchController.obscuresBackgroundDuringPresentation = YES;
//点击搜索的时候,是否隐藏导航栏
self.searchController.hidesNavigationBarDuringPresentation = YES;
self.definesPresentationContext =YES;
//位置
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y,self.searchController.searchBar.frame.size.width,44.0);
// 添加 searchbar到 headerview
self.skTableView.tableHeaderView = self.searchController.searchBar;
[self.viewaddSubview:self.skTableView];
[self.searchController.viewaddSubview:self.resultTableView];
self.resultTableView.hidden = YES;
#pragma mark - UISearchControllerDelegate代理,可以省略,主要是为了验证打印的顺序
//测试UISearchController的执行过程
- (void)willPresentSearchController:(UISearchController *)searchController
{
NSLog(@"willPresentSearchController");
}
- (void)didPresentSearchController:(UISearchController *)searchController
{
NSLog(@"didPresentSearchController");
// [self.view addSubview:self.searchController.searchBar];
}
- (void)willDismissSearchController:(UISearchController *)searchController
{
NSLog(@"willDismissSearchController");
}
- (void)didDismissSearchController:(UISearchController *)searchController
{
NSLog(@"didDismissSearchController");
}
- (void)presentSearchController:(UISearchController *)searchController
{
NSLog(@"presentSearchController");
}
//谓词搜索过滤 将文件加入工程 导入头文件 复制粘贴下面的代码 涉及到两个数组 self.searchListArry 是搜索结果的数组
/// self.dataListArry 是所有数据的数组
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController {
self.searchListArry = [NSMutableArrayarray];
if (searchController.searchBar.text.length>0&&![ChineseIncludeisIncludeChineseInString:searchController.searchBar.text]) {
for (int i=0; i<self.dataListArry.count; i++) {
if ([ChineseIncludeisIncludeChineseInString:self.dataListArry[i]]) {
NSString *tempPinYinStr = [PinYinForObjcchineseConvertToPinYin:self.dataListArry[i]];
NSRange titleResult=[tempPinYinStrrangeOfString:searchController.searchBar.textoptions:NSCaseInsensitiveSearch];
if (titleResult.length>0) {
if (![self.searchListArrycontainsObject:self.dataListArry[i]]) {
[self.searchListArryaddObject:self.dataListArry[i]];
}
}
NSString *tempPinYinHeadStr = [PinYinForObjcchineseConvertToPinYinHead:self.dataListArry[i]];
NSRange titleHeadResult=[tempPinYinHeadStrrangeOfString:searchController.searchBar.textoptions:NSCaseInsensitiveSearch];
if (titleHeadResult.length>0) {
if (![self.searchListArrycontainsObject:self.dataListArry[i]]) {
[self.searchListArryaddObject:self.dataListArry[i]];
}
}
}else {
NSRange titleResult=[self.dataListArry[i]rangeOfString:searchController.searchBar.textoptions:NSCaseInsensitiveSearch];
if (titleResult.length>0) {
if (![self.searchListArrycontainsObject:self.dataListArry[i]]) {
[self.searchListArryaddObject:self.dataListArry[i]];
}
}
}
}
} elseif (searchController.searchBar.text.length>0&&[ChineseIncludeisIncludeChineseInString:searchController.searchBar.text]) {
for (NSString *tempStrin self.dataListArry) {
NSRange titleResult=[tempStrrangeOfString:searchController.searchBar.textoptions:NSCaseInsensitiveSearch];
if (titleResult.length>0) {
if (![self.searchListArrycontainsObject:tempStr]) {
[self.searchListArryaddObject:tempStr];
}
}
}
}
if (self.searchListArry.count != 0) {
self.resultTableView.hidden = NO;
[self.resultTableViewreloadData];
}else{
self.resultTableView.hidden = YES;
[self.resultTableViewreloadData];
}
}
- SearchController + 中英关联搜索
- UISearchController的用法,搜索后点击进入下一页要特别注意 [self.searchController presentViewController:detailVC animated
- 简单的关联搜索
- 解决SearchController.searchbar的问题
- Yii 在GridView中使用关联模型进行搜索和排序
- Yii2-GridView 中让关联字段带搜索和排序功能
- Yii2-GridView 中让关联字段带搜索和排序功能
- iOS8 之后对 SearchController的使用
- 两行代码搞定多级关联搜索
- lucene query time join (关联搜索)
- Yii2让关联字段支持搜索功能
- PHP关联数组搜索键和值
- 快速搜索(QuickSearchbox)怎么关联应用(apk)
- SE11建立的搜索帮助来实现关联搜索帮助。
- ORACLE中关联
- Android中关联源码
- eclipse中关联源码
- STL中关联容器
- [NOIP2003]区间dp-加分二叉树
- 数据结构之顺序表排序问题
- sklearn 中的 Pipeline 机制
- [Android]Layout中ImageView中图片的对齐显示问题
- 十年后,这是25个你会习以为常的AI应用场景
- SearchController + 中英关联搜索
- Ceph v12.1.0 Luminous RC released
- Spring Boot 集成 FreeMarker 详解案例
- 利用for循环,打一个圣诞树
- 前端学习笔记2-2 CSS
- 路由原理与路由表生成
- alter增加多个字段
- no result defined for action
- 关于android中矢量图如何用,有坑,爬坑,如何替代的另一些看法