类似两个UITableView实现联动效果
UITableView实现滚动定位与联动效果的应用还是蛮广泛的, 目前刚好实现了这个功能, 在此记录一下.
先看一下实现效果:
实现效果任何功能的实现思路都很重要, 于是学习模仿一位牛人的思考方式:
1. 先分析我要实现什么效果 2. 实现的难点是什么 3.寻找突破问题的关键点
实现思路问题一: 上面的日期如何与下面的数据对应上, 实现点击某个日期时可以刚好滚动到对应的位置?
解决: 我的实现思路是上面日期对应每一个组, 每个组中可以包含若干个数据, 每点击一个日期就UItableview滚动到对应的组, UITableView有这个实现方法. 这里重点是与后台协商返回数据格式很重要.
问题二: 滚动下面的数据时刚好将其上面的日历对应的日期位于中间?
解决: 监听滚动的UItableview最上面的一个cell对应的时间, 遍历上面日期, 如果时间相同便使其居中.
问题三: 点击日历中的日期居中?
解决: 这个直接计算点击的日期对应的偏移量即可解决.
问题四: 刚进入时数据是从今天往后的所有数据, 点击今天之前的日期时才将点击的日期及后面的所有数据显示, 反之今天之前的未点击日期的数据不显示?
解决: 这个解决思路是后台控制我将从哪天开始显示, 后台依旧是返回所有日期的数据, 而刚进入时只显示从今天开始后的所有数据由终端控制, 我们截取从今天开始后的所有数据显示, 当点击某个日期时, 移除原先截取的所有数据, 然后重新截取选中日期开始后的所有数据并刷新UItableview.
所有的疑惑罗列出来并提出了解决方案, 下面是实现代码截图:
数组变量,下面需要用到的解释1. 监听UItableview的滚动:
监听UItableview的滚动2. 处理手动滚动cell到最顶部时对应的日期居中显示
处理滚动到顶部cell时对应的日期居中显示2.1 . 具体实现顶部日期居中并颜色改变
这里需要注意一点的是: 如果顶部日期处于最右或者最左边时, 不需要居中显示
顶部日期居中 居中日期颜色改变3. 顶部日历点击监听事件
这个地方实现了问题四的关键点. 删除之前的数据(仅仅是点击的日期数据还没"加载"出来才需要删除之前的数据, 反之,不需要删除, 直接使其居中即可), 再从所有数据中截取符合条件的所有数据
接上下面的代码显示 顶部日历点击监听事件4. 滚动UItableview对应组到顶部位置
滚动UItableview对应组到顶部位置这里之前有个问题, 我自己计算滚动到哪一组,结果发现并没有UItableview自带的滚动效果好,附上之前自己的一段代码, 我在上面步骤4的方法中自己计算的
自己计算滚动的偏移量整理完思路后 , 整个的实现过程并没有很复杂. 相信你也可以的!
记录完毕!
欢迎指正!
毛姆说的,阅读能为自己筑起一个避难所,几乎可以避开生命中所有的灾难。
欢迎关注我的微信公众号:LDYG2017, 或扫描下方二维码关注. 这里会分享我的读书笔记, 愿你我共同进步.
初始化蒲公英