文档章节

热门搜索和历史搜索的设计思想

iShown
 iShown
发布于 2016/02/04 18:22
字数 470
阅读 140
收藏 3

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


       

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


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

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

一般的搜索包括上边的一个宫格的显示和下边的列表显示,初步思路一般是上边使用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;
}

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



© 著作权归作者所有

iShown
粉丝 15
博文 67
码字总数 46936
作品 0
浦东
高级程序员
私信 提问
加载中

评论(2)

iShown
iShown

引用来自“LAJS”的评论

我裤子都脱了 你就说这个 我还以为你要讲后台是怎么把这些数据筛选出来的呢

我只是个小前端5,不好意思呀
护士的小黄瓜
护士的小黄瓜
我裤子都脱了 你就说这个 我还以为你要讲后台是怎么把这些数据筛选出来的呢
一款综合(QQ 音乐、微信、美团、优酷、虎牙直播等多款 app)风格的搜索控制器

PYSearch GitHub地址:https://github.com/iphone5solo/PYSearch 项目作者:CoderKo1o 🔍 An elegant search controller for iOS. 🔍 iOS 中一款优雅的搜索控制器。 Features 支持多种热......

iphone5solo
2016/11/01
884
0
网易惠惠购物助手:大数据实时更新框架概述

一、需求是什么? 互联网中的许多应用都有数据实时更新的需求,比如网页搜索如何展示几分钟之前的新闻结果,购物搜索中价格、库存信息的实时更新。在大数据量的情况下,数据如何做到稳定及时...

xrzs
2015/12/05
636
0
iOS 的搜索控制器--PYSearch

PYSearch,iOS 中一款优雅的搜索控制器。一款综合(QQ 音乐、微信、美团、优酷、虎牙直播等多款 app)风格的搜索控制器。 功能: 支持多种热门搜索风格 支持多种搜索历史风格 支持多种搜索结...

iphone5solo
2016/11/01
2.4K
1
高仿网易云音乐 Vue前端项目

现在就克隆下来看看吧! Github地址: github.com/cat-walk/mu… 项目部署地址: meiyun.info 前端部分 安装依赖 起项目 后端部分 Github地址:github.com/Binaryify/N… 后端操作见文档。 ...

CatWalk
04/18
0
0
PYSearch —— iOS 中的多风格搜索控制器

PYSearch是iOS 中一款优雅的搜索控制器,一款综合(QQ 音乐、微信、美团、优酷、虎牙直播等多款 app)风格的搜索控制器。支持多种热门搜索风格,支持多种搜索历史风格,支持多种搜索结果显示...

王练
2016/11/02
25
0

没有更多内容

加载失败,请刷新页面

加载更多

kubernetes API 访问控制在阿里云容器服务(ACK)上的实践

提起K8s API的访问控制,很多同学应该都会想到RBAC,这是K8s用来做权限控制的方法,但是K8s对API的访问控制却不止于此,今天我们就来简单介绍下K8s的访问控制以及ACK如何利用这套方法提供便捷...

zhaowei121
18分钟前
1
0
从HelloWorld看Knative Serving代码实现

概念先知 官方给出的这几个资源的关系图还是比较清晰的: 1.Service: 自动管理工作负载整个生命周期。负责创建route,configuration以及每个service更新的revision。通过Service可以指定路由流...

迷你芊宝宝
19分钟前
1
0
如何防止http请求数据被篡改

故事的开始,面试官问了我一个问题: 如何防止http请求中数据被篡改? 回答: 1.设置客户端IP黑/白名单 1.1.客户端所有请求,请求到代理服务器(nginx),代理服务器维护黑/白名单的ip,决定是...

太猪-YJ
23分钟前
1
0
好程序员大数据笔记之:Hadoop集群搭建

在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天集中总结以下笔记,希望对各位同学...

好程序员IT
30分钟前
1
0
MySql用navcat连接时报错 2509

在8版本以后的MySql默认的加密方式都改为了caching_sha2_password 因此进入mysql的命令行更改加密方式即可 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER......

lanyu96
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部