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 大众点评 搜索界面实现相关推荐

  1. 大众点评搜索相关性技术探索与实践

    搜索相关性用于衡量Query和Doc的相关程度,是搜索引擎的重要环节,本文主要讲述大众点评搜索团队在相关性计算上的技术探索和实践,通过多相似矩阵模型结构.多阶段训练等方法提升预训练模型在相关性问题上的 ...

  2. GitChat · 测试 | 大众点评搜索测试全揭露:1:9 的测试开发比下 QA 如何前行

    GitChat 作者:梦婷 原文:大众点评搜索测试全揭露:1:9 的测试开发比下 QA 如何前行 关注微信公众号:GitChat 技术杂谈 ,一本正经的讲技术 [不要错过文末活动] 背景介绍 本人20 ...

  3. 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践

    1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带.而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜 ...

  4. 领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践

    本文转载自公众号:美团技术团队. 本文介绍了大众点评搜索核心排序层模型的演化之路,包括结合知识图谱信息构建适合搜索场景的Listwise深度学习排序模型LambdaDNN以及特征工程实践和相关工具建设 ...

  5. 【实践】端智能在大众点评搜索推荐重排序的应用实践

    猜你喜欢 0.2022年人才市场洞察及薪酬指南1.如何搭建一套个性化推荐系统?2.[免费下载]2022年1月份热门报告3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5. ...

  6. 端智能在大众点评搜索重排序的应用实践

    端智能,是指在移动端设备运行人工智能(AI)应用的技术.本文主要讲述大众点评搜索场景下,在端侧部署大规模深度学习模型进行搜索重排序任务的实践方案,包括端上特征工程.模型迭代思路,以及具体部署优化的过程 ...

  7. 美团技术团队-大众点评搜索基于知识图谱的深度学习排序实践

    美团技术团队博客网址:https://tech.meituan.com/2019/02/28/root-clause-analysis.html 1. 引言 挑战与思路 搜索是大众点评App上用户进行 ...

  8. android 粗暴简单仿美团/大众点评搜索方式,详细标注

    转载请注明出处王亟亟的大牛之路 美团和大众点评的搜索和筛选栏,不能说好看(审美flag),但是满足了我们的搜索还筛选的需求,所以今天就实现了下这样的一个小Demo 项目结构:运行效果就是下图了,就不再 ...

  9. IOS 大众点评 团购界面实现

    具体实现功能与首页界面的功能相近,比其简单. 1.仍然需要在API接口代码中  添加解析方法 NSMutableArray*groupArr = [NSMutableArray array]; gro ...

最新文章

  1. 如何优雅地训练大型模型?
  2. Hybrid App 跨平台热更新方案实践 附带源码
  3. (转)java DecimalFormat用法
  4. Python通过代理多线程抓取图片
  5. 1.17 局部内部类
  6. mysql5.2 软件园_MySQL Server V5.5 官方安装版
  7. listitem android,android-为contextmenu标识listitem的ID
  8. eclipse maven scm
  9. 两个栈实现队列+两个队列实现栈----java
  10. win10无法添加工作组计算机,win10系统工作组计算机无法访问的具体步骤
  11. Flume之生产正确的使用方式二(Multiple Agent+ Multiple Channel+Custom)
  12. 使用marmaid让mrakdown支持作图
  13. jacob xls与xlsx格式互转
  14. Ridge Regression and Kernel Ridge Regression
  15. 根据灰度直方图调整图象亮度
  16. 基于MaxCompute的热门话题分析笔记
  17. 建筑制图计算机辅助设计,计算机辅助设计AutoCAD建筑制图中绘制技巧研究.doc
  18. FPGA视频接口方案,VGA,HDMI,LVDS,SDI接口转换
  19. 中国联通2g信号停止服务器,中国联通关闭2G/3G服务?官方回应来了
  20. 010 - 微信小程序开发之大转盘 仿天猫超市抽奖

热门文章

  1. 职场中要警惕领导的3种行为
  2. c语言判断顺序链表是否为空,数据结构之线性表(五)——单链表(2 初始化,判断空表,销毁,清空,求表长)...
  3. 信息滤波、UD滤波、遗忘滤波和自适应滤波
  4. C基础学习之C 从函数返回数组
  5. 动态修改el-input样式;动态修改elmentUI元素样式;css变量
  6. 蚂蚁感冒 (acwing)
  7. windows系统dos命令:cmd.exe运行的bat批处理命令详解
  8. c语言中怎么转换类型数据类型,C语言中数据类型转换
  9. 醍醐灌顶:领域驱动设计实现之路
  10. 微信小程序开发从入门到实践 测试6