IOS 大众点评 搜索界面实现
1.目前首页界面的功能都实现了,但是在 标题的北京那个按钮的搜索功能没有实现;
2.下面3张图 是功能流程图。
反向传值实现的功能。
思路步骤: 1.图1功能已经实现。
2.点击北京按钮 (按钮需要在自己的.m里面关联,里面不用些代码)跳转到一个新的CityListTableViewController页面,同事按住按钮 与页面关联(segue)跳转 下面是跳转方法;
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"category"]) {
CategoryDetialTableViewController * ctvc = segue.destinationViewController;
ctvc.arr = sender;
//城市列表页面跳转
}else if([segue.identifier isEqualToString:@"cityList"]){
CityListTableViewController *cityVc = segue.destinati
onViewController;
cityVc.delegate = self;
}
<<CityListTableViewController.m>>
城市列表页面
3.跳转完成后, 就需要在城市列表页面中对
数据进行展示了, 同事需要拖出一个搜索控件, 关联自己的delegate到当前tableviewController
#import "CityListTableViewController.h"
#import "HomeTableViewController.h"
@interface CityListTableViewController ()<UISearchDisplayDelegate,UISearchBarDelegate>//第一个协议是实现搜索框数据改变的方法在里面,第二个是取消按钮的相关协议,实现方法在里面
@property (nonatomic,strong)NSMutableArray *citys;
@end
@implementationCityListTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle]pathForResource:@"citys" ofType:@"plist"];
//添加数据源数组;
self.citys = [NSMutableArray arrayWithContentsOfFile:path];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.citys.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
if (tableView.tag == 1) {
UITableViewCell *cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
cell.textLabel.text = self.citys[indexPath.row];
return cell;
}else{
UITableViewCell *cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
cell.textLabel.text = self.citys[indexPath.row];
cell.detailTextLabel.text = @"搜索数据";
return cell;
}
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString*)searchString{
NSMutableArray *newCitys= [NSMutableArray array];
for (NSString *city in self.citys) {
if ([city rangeOfString:searchString].length>0) {
[newCitys addObject:city];
}
}
//在遍历完了之后在返回给数据源数组;
self.citys = newCitys;
//还有一个情况就是空的情况
if (!searchString||[searchString isEqualToString:@""]) {
NSString *path = [[NSBundle mainBundle]pathForResource:@"citys" ofType:@"plist"];
NSMutableArray *arr =[NSMutableArray arrayWithContentsOfFile:path];
self.citys = arr;
}
//刷新数据源
[self.tableView reloadData];
return YES;
}
- (void)searchBarCancelButtonClicked:(UISearchBar*)searchBar{
//如果点取消,应该是数据源数组重置一下;
//数据源重新加载
NSString *path = [[NSBundle mainBundle]pathForResource:@"citys" ofType:@"plist"];
self.citys = [NSMutableArray arrayWithContentsOfFile:path];
[self.tableView reloadData];
}
4.以上代码是搜索列表的所有功能的实现。 现在的问题就剩: 当我点击城市列表的对应的Cell时候,将对应的数值反向传值到首页界面,并
将按钮的显示信息更换, 同时更换首页的数据源显示信息: (也就是改变首页的 解析字典的判定,)
5.跳转方法里面实现的内容
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
HomeTableViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeTableViewController"];
NSString *cityNames = self.citys[indexPath.row];
[vc backCityName:cityNames];
[self.navigationController pushViewController:vc animated:YES];
} 跳转方法实现内容的解释: 在跳转的时候创建A页面,跳转过去,同时将对应的数据传递给一个字符串类型; 同时在A类的.H中声明
方法供B类调用 这样A类才能得到传递回去的城市名称, 才能更改按钮的名称, 以及首页的数据;
这里要知道反向传值的流程
1.在B类的.h中声明一个A类型的weak属性delegate
2.在A类中创建完B类的时候给B类型对象的delegate属性赋值
3.在A类的.h中声明方法供B类调用 如果需要传递回来参数那该方法声明时需要带参数
4.在A类中使用此方法;
在viewWillAppear里面写最后一个; 写完这些,恭喜你,搜索功能完成了;
<<HomeTableViewController.m>>
主页页面
第一次加载的时候显示3张个性化, 第二次加载就直接不显示3张个性化了
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
int runCount = [ud integerForKey:@"runCount"];
runCount ++ ;
[ud setInteger:runCount forKey:@"runCount"];
[ud synchronize];
//声明一个轻量级技术方法;
//声明一个数字记录, 每次记录的时候需要把之前的数字取出来,如果数字没有值就证明是第1次
//每次取值后都应该 让计数+1;
//通过方法将记录在ud当中 键值为runCount的对应计数属性 取出来, 并同步
//简单计数方法实现。
//如果runCount为1,证明系统是第一次进来, 第一次进来就要显示个性化界面
if (runCount == 1) {
//只有ViewController才有storyBord,当前self指的是AppDelegate.
//先拿到根才可以拿到storyBord
UIViewController*appView = self.window.rootViewController;
ViewController *vc =[appView.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
self.window.rootViewController =vc;
IOS 大众点评 搜索界面实现相关推荐
- 大众点评搜索相关性技术探索与实践
搜索相关性用于衡量Query和Doc的相关程度,是搜索引擎的重要环节,本文主要讲述大众点评搜索团队在相关性计算上的技术探索和实践,通过多相似矩阵模型结构.多阶段训练等方法提升预训练模型在相关性问题上的 ...
- GitChat · 测试 | 大众点评搜索测试全揭露:1:9 的测试开发比下 QA 如何前行
GitChat 作者:梦婷 原文:大众点评搜索测试全揭露:1:9 的测试开发比下 QA 如何前行 关注微信公众号:GitChat 技术杂谈 ,一本正经的讲技术 [不要错过文末活动] 背景介绍 本人20 ...
- 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践
1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带.而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜 ...
- 领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践
本文转载自公众号:美团技术团队. 本文介绍了大众点评搜索核心排序层模型的演化之路,包括结合知识图谱信息构建适合搜索场景的Listwise深度学习排序模型LambdaDNN以及特征工程实践和相关工具建设 ...
- 【实践】端智能在大众点评搜索推荐重排序的应用实践
猜你喜欢 0.2022年人才市场洞察及薪酬指南1.如何搭建一套个性化推荐系统?2.[免费下载]2022年1月份热门报告3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5. ...
- 端智能在大众点评搜索重排序的应用实践
端智能,是指在移动端设备运行人工智能(AI)应用的技术.本文主要讲述大众点评搜索场景下,在端侧部署大规模深度学习模型进行搜索重排序任务的实践方案,包括端上特征工程.模型迭代思路,以及具体部署优化的过程 ...
- 美团技术团队-大众点评搜索基于知识图谱的深度学习排序实践
美团技术团队博客网址:https://tech.meituan.com/2019/02/28/root-clause-analysis.html 1. 引言 挑战与思路 搜索是大众点评App上用户进行 ...
- android 粗暴简单仿美团/大众点评搜索方式,详细标注
转载请注明出处王亟亟的大牛之路 美团和大众点评的搜索和筛选栏,不能说好看(审美flag),但是满足了我们的搜索还筛选的需求,所以今天就实现了下这样的一个小Demo 项目结构:运行效果就是下图了,就不再 ...
- IOS 大众点评 团购界面实现
具体实现功能与首页界面的功能相近,比其简单. 1.仍然需要在API接口代码中 添加解析方法 NSMutableArray*groupArr = [NSMutableArray array]; gro ...
最新文章
- 如何优雅地训练大型模型?
- Hybrid App 跨平台热更新方案实践 附带源码
- (转)java DecimalFormat用法
- Python通过代理多线程抓取图片
- 1.17 局部内部类
- mysql5.2 软件园_MySQL Server V5.5 官方安装版
- listitem android,android-为contextmenu标识listitem的ID
- eclipse maven scm
- 两个栈实现队列+两个队列实现栈----java
- win10无法添加工作组计算机,win10系统工作组计算机无法访问的具体步骤
- Flume之生产正确的使用方式二(Multiple Agent+ Multiple Channel+Custom)
- 使用marmaid让mrakdown支持作图
- jacob xls与xlsx格式互转
- Ridge Regression and Kernel Ridge Regression
- 根据灰度直方图调整图象亮度
- 基于MaxCompute的热门话题分析笔记
- 建筑制图计算机辅助设计,计算机辅助设计AutoCAD建筑制图中绘制技巧研究.doc
- FPGA视频接口方案,VGA,HDMI,LVDS,SDI接口转换
- 中国联通2g信号停止服务器,中国联通关闭2G/3G服务?官方回应来了
- 010 - 微信小程序开发之大转盘 仿天猫超市抽奖
热门文章
- 职场中要警惕领导的3种行为
- c语言判断顺序链表是否为空,数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)...
- 信息滤波、UD滤波、遗忘滤波和自适应滤波
- C基础学习之C 从函数返回数组
- 动态修改el-input样式;动态修改elmentUI元素样式;css变量
- 蚂蚁感冒 (acwing)
- windows系统dos命令:cmd.exe运行的bat批处理命令详解
- c语言中怎么转换类型数据类型,C语言中数据类型转换
- 醍醐灌顶:领域驱动设计实现之路
- 微信小程序开发从入门到实践 测试6