iOS 工作中遇到的一个tableView设计
来源:互联网 发布:网络车珠子是什么意思 编辑:程序博客网 时间:2024/05/22 17:43
使用自定义的tabelViewCell有一段时间了,自定义的tableViewCell在开发中非常常用,虽然对于其底层的实现和基本的原理了解得不是很透彻,但是经过多次使用,总觉得自己对其也算是比较熟悉了,直到今天开发遇到了UI组出的一个奇葩设计(或者是因为我才疏学浅),如下图:
如上图,红色为第一级目录,原始状态只有红色的cell,可以看到,红色的cell是用plain的tableView风格排列的,但点击了红色的cell后,产生展开的感觉,展开后就是如上图所示的tableViewCellstyleValue1的tableViewCell 蓝色为cell 的textLabel,绿色为detailLabel,这时可以开到,tableView的风格,又变成了grouped。黄色部分为headerViewtitle。
所以,这个tableView到底是要用plain风格还是要用grouped风格,我想了很久,其实实现的方法可以很多,但是感觉的都比较麻烦。我问了一个比我资深的同事,他提供了两种方法。一:用plain风格,然后把所有视觉上看到的行都看作是一个cell,一个一个地去插入,如一个灰色的分割条是一个cell,然后每个有蓝绿色的行又是一个Cell,如下:
做为一个cell
做为一个cell
做为一个cell
这样的确可以实现,但是UI是实现了,但是背后的逻辑呢?以我的智商,我觉得是复杂到了极点,所以我在这个基础上先了另一个基于plain tabelView的方法,就是把
做为一个cell,
这样做貌似简单了很多,的确,这样做比我同事说的优化了那么一点,但是其实这后面的逻辑还是非常的复杂,因为我们知道,展开后的数据其实都是属于展开前那个cell的,如果把这些数据一个个地独立开,数据的操作将会非常的麻烦。
我同事提出的第二个方法,当然就是用grouped的tableView了,他的意思就是把三个根cell也做为section,点击了,再往中间插section,这样除了有上述一样的复杂逻辑以外,还有一个问题就是,初始状态,没有展开的时候,用grouped排列的几个只有一个row的section,是很难做得想plain那样美观,因为有header和footer的存在。
所以,我最后想到的办法,就是把展开的数据都放到一个Cell中去,所以这里就必须实现一个比较疯狂的事情,也是我之前一直没有尝试过的,在一个tableView的tableViewCell中再插入一个tableView,用这个方法,就可以很好的解决上述的问题了。
初始状态是plain,展开后只插入一个cell,这个cell中包含一个grouped的tableView,这个tableView里装的都是来自于同一个数据源的数据。这样就可以美观和逻辑简单都实现了。
- iOS 工作中遇到的一个tableView设计
- iOS开发中遇到的一个错误
- iOS中TableView的自定义
- iOS中TableView的不同类型
- iOS中TableView的不同类型
- 工作中遇到的
- 工作中遇到的发送报警短信的流程图设计
- 工作中遇到的一个值得学习的存储过程//
- iOS 心得三 工作中遇到的相关要点
- 整理iOS工作学习过程中遇到的各种问题
- iOS数据、界面分开设计模式遇到的一个问题
- iOS中一个tableView中显示两种cell的问题
- 组样式的tableView遇到的一个坑
- 工作中遇到的困扰
- 工作中遇到的问题
- 工作中遇到的问题
- 工作中遇到的问题
- 工作中遇到的问题
- 线性表实验二 以失败告终
- C指针编程之道 ---第一次笔记
- Play on Words - UVa 10129 欧拉回路
- asp.net中母版页与内容页加载顺序
- Wikioi P1067 机器翻译
- iOS 工作中遇到的一个tableView设计
- 第九周 项目六 穷举法解决组合问题3
- C语言编程100例之4
- 黑马程序员--Java基础之开发前奏
- 滚动条
- 第九周上机项目3 星星图
- Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (Doc ID 14
- 【cocos2d-x-3.1.1系列4(2)】cocos2d-x3.1.1.渲染 3.0的改进原因
- java连接数据库MySQL