博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
热门搜索和历史搜索的设计思想
阅读量:6266 次
发布时间:2019-06-22

本文共 2772 字,大约阅读时间需要 9 分钟。

hot3.png

最近写了一个搜索热门和历史的页面 类似于这样的

175256_FAqp_2476972.png    175257_cCys_2476972.png    175258_e2QV_2476972.png

可以看到这样的页面在APP中用的还是很多的,下面就讲讲我的思路吧

我做的是类似于最后一个淘宝的界面,实际效果类似这样,稍后整理一下贴出来Demo

180335_FpNw_2476972.png

那我就以这个为例子讲讲怎么实现

一般的搜索包括上边的一个宫格的显示和下边的列表显示,初步思路一般是上边使用UICollectionView,下边使用UITableView,但是深入思考一下如果这样处理的话将会有很多代理和方法将要挤在这个页面,并且后续为了视觉的效果肯定不会跳转新的页面这样还会有一个新的UITableView,更多的代理和DataSource,最后个人认为这个地方更加适用使用分组的UITableView

这么处理的话就很明显了,第一个分组设置成一个Cell,第二个分组设置成Array.count+1个Cell

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    if (tableView == _tableView) {        if (section == 0) {            return 1;        } else {            return historyArray.count + 1;        }            }else{        return [resultArray count];    }}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    if (tableView == _tableView) {        if (indexPath.section == 0) {            return 90;        } else {            return 44;        }    }    return 40;}
#pragma mark tableViewDatasouce- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    if (tableView == _tableView) {        if (indexPath.section == 0) {            HotSearchCell * hotCell = [tableView dequeueReusableCellWithIdentifier:@"hotCell"];            if (hotCell == nil) {                hotCell = [[HotSearchCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"hotCell"];            }            //......            return hotCell;        } else {            if (indexPath.row == historyArray.count ) {            //......                bgview.backgroundColor = RGB(226, 226, 226);                cleanCell.textLabel.text = @"清除历史纪录";                return cleanCell;            }            UITableViewCell * historyCell = [tableView dequeueReusableCellWithIdentifier:@"historyCell"];            if (historyCell == nil) {                historyCell = [[HotSearchCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"historyCell"];            }           //......            return historyCell;        }    }}
//cell.h- (void)buttonWhenClick:(void(^)(UIButton *button))block;//cell.m- (void)setButtonTitle:(NSArray *)arr {    for (NSInteger i = 0; i < arr.count; i++) {        UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(10 + (i % 4) * (ButtonWidth + 10), (i / 4) * 40, ButtonWidth, 30)];        [button setTitle:arr[i] forState:UIControlStateNormal];        [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];        [self.contentView addSubview:button];   }}- (void)buttonClick:(UIButton *)button {    self.buttonClickBlock(button);}- (void)buttonWhenClick:(void (^)(UIButton *))block {    self.buttonClickBlock = block;}

贴出来一些代码供大家学习

转载于:https://my.oschina.net/bieshixuan/blog/613893

你可能感兴趣的文章
zoj3591 Nim(Nim博弈)
查看>>
canvas绘图
查看>>
poj - 3039 Margaritas on the River Walk
查看>>
bootstrap(5)关于导航
查看>>
Aptana插件在eclipse中安装
查看>>
jQuery-数据管理-删除事件
查看>>
下载器简单实例
查看>>
java实现分页工具类(JDBC)
查看>>
欧几里德算法与扩展欧几里德算法
查看>>
Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 2)
查看>>
通过kafka提供的命令来查看offset消费情况
查看>>
oracle数据库从入门到精通之四
查看>>
自定义圆形图片控件
查看>>
sharepoint 2013 补丁升级步骤
查看>>
asp.net core 2.0 web api基于JWT自定义策略授权
查看>>
Skype for Business Server 2015-04-前端服务器-3-安装-管理工具
查看>>
第12章代码《跟老男孩学习Linux运维:Shell编程实战》
查看>>
我们为什么从Python转到go?
查看>>
5.Azure负载均衡(上)
查看>>
轻松精通awk数组企业问题案例
查看>>