美文网首页
TableView中嵌套TableView

TableView中嵌套TableView

作者: limbo_lyn | 来源:发表于2018-07-11 10:42 被阅读0次

    效果


    首先分析下这个界面的构成。

    这个界面总共由三个TableView构成,最外层一个TableView,两个栏目分别对应两个TableView。


    基本解决思路

    监听最外层TableView滑动事件,滑动时判断是外层TableView滑动,还是内部TableView

    滑动

    代码解释:默认情况下gestureRecognizer会返回false,表示手势有冲突时,忽略自己的事件,在这个场景下,可以简化认为是否处理滑动事件(因为滑动时内部TableView时,外部TableView和内部TableView包括其他的View都会引发这个事件,如果默认返回false,事件将会被丢失)。

    实现方法的类,作为最层TableView,其中allowGestureEventPassViews的otherGestureRecognizer就是内部的TableView,这样就能保证在事件冲突时,事件依然能被传递和处理。

    解决方案

    自定义两个基类,包裹住内部TableView和外部TableView,两个TableView同时响应滚动事件,在响应事件中,判断哪个TableView应该滚动

    外部容器关键代码

    内部容器关键代码

    外部容器保存了外部TableView。

    内容容器保存内部的TableView,同时也保存了外部的TableView

    滚动时,内部和外部的都会调用tableViewDidScroll方法,在内外的tableViewDidScroll中判断应该由TableView滚动。

    模块的使用

    外部的TableView的cell 是CAPSPageMenu(拥有两个TableView的ViewController),滚动时调用外部容器的tableViewDidScroll。

    内部的TableView滚动时,调用内部TableView的tableViewDidScroll

    总结

    外部的TableView处理手势冲突,使用时,内外的的滚动都交由内外容器去处理,在容器中判断由哪个TableView滚动

    实际代码位置

    common/view/BaseNestTableView

    相关文章

      网友评论

          本文标题:TableView中嵌套TableView

          本文链接:https://www.haomeiwen.com/subject/nvefpftx.html