iOS开发进阶iOS点点滴滴

类似两个UITableView实现联动效果

2017-12-03  本文已影响37人  LDYG14

UITableView实现滚动定位与联动效果的应用还是蛮广泛的, 目前刚好实现了这个功能, 在此记录一下.

先看一下实现效果:

实现效果

任何功能的实现思路都很重要, 于是学习模仿一位牛人的思考方式:

1. 先分析我要实现什么效果       2. 实现的难点是什么        3.寻找突破问题的关键点

实现思路

问题一: 上面的日期如何与下面的数据对应上, 实现点击某个日期时可以刚好滚动到对应的位置?

解决: 我的实现思路是上面日期对应每一个组, 每个组中可以包含若干个数据, 每点击一个日期就UItableview滚动到对应的组, UITableView有这个实现方法. 这里重点是与后台协商返回数据格式很重要.

问题二:  滚动下面的数据时刚好将其上面的日历对应的日期位于中间?

解决: 监听滚动的UItableview最上面的一个cell对应的时间, 遍历上面日期, 如果时间相同便使其居中.

问题三: 点击日历中的日期居中?

解决: 这个直接计算点击的日期对应的偏移量即可解决.

问题四: 刚进入时数据是从今天往后的所有数据, 点击今天之前的日期时才将点击的日期及后面的所有数据显示, 反之今天之前的未点击日期的数据不显示?

解决: 这个解决思路是后台控制我将从哪天开始显示, 后台依旧是返回所有日期的数据, 而刚进入时只显示从今天开始后的所有数据由终端控制, 我们截取从今天开始后的所有数据显示, 当点击某个日期时, 移除原先截取的所有数据, 然后重新截取选中日期开始后的所有数据并刷新UItableview.

所有的疑惑罗列出来并提出了解决方案, 下面是实现代码截图:

数组变量,下面需要用到的解释

1. 监听UItableview的滚动:

监听UItableview的滚动

2. 处理手动滚动cell到最顶部时对应的日期居中显示

处理滚动到顶部cell时对应的日期居中显示

2.1 . 具体实现顶部日期居中并颜色改变

这里需要注意一点的是: 如果顶部日期处于最右或者最左边时, 不需要居中显示

顶部日期居中 居中日期颜色改变

3. 顶部日历点击监听事件

这个地方实现了问题四的关键点. 删除之前的数据(仅仅是点击的日期数据还没"加载"出来才需要删除之前的数据, 反之,不需要删除, 直接使其居中即可), 再从所有数据中截取符合条件的所有数据

接上下面的代码显示  顶部日历点击监听事件

4. 滚动UItableview对应组到顶部位置

滚动UItableview对应组到顶部位置

这里之前有个问题, 我自己计算滚动到哪一组,结果发现并没有UItableview自带的滚动效果好,附上之前自己的一段代码, 我在上面步骤4的方法中自己计算的

自己计算滚动的偏移量

整理完思路后 , 整个的实现过程并没有很复杂.  相信你也可以的! 

记录完毕!

欢迎指正!

毛姆说的,阅读能为自己筑起一个避难所,几乎可以避开生命中所有的灾难。

 欢迎关注我的微信公众号:LDYG2017,  或扫描下方二维码关注. 这里会分享我的读书笔记, 愿你我共同进步.

初始化蒲公英
上一篇下一篇

猜你喜欢

热点阅读