美文网首页PerhapYs的OC学习日记iOSerswift编程开发
多个tableView嵌套tableView Plain 样式下

多个tableView嵌套tableView Plain 样式下

作者: 火柴大男人 | 来源:发表于2016-07-10 11:43 被阅读1943次

1:如图实现下面的效果

一:tableViewPlain样式大家都应该很清楚了,它可以让sectionHeader 悬停,但如果要实现如下多个tableView这样的效果就只能自定义了.

项目地址:https://github.com/KylinSpace/TableViewsInTableView.git

实现方案:

第一:在控制器中添加三个了控件,最上面类似于tableViewHeader,使用UIView添加一个imageView;

中间类似于tableViewSectionHeader使用一个scrollView方便以后进行扩展;

最下面用于展示四个tableview的也用scrollView(该scrollView是自定义的一个,因为要实现scrollView中的tableView左滑删除功能,请参考我另外一篇文章);接下来就是布局了,这个大家应该都会了;

第二:怎么让实现headerView跟着tableView滚动来变化,sectionHeader怎么悬停这才是关键思路

首先:在每个tableView中设置一个代理,tableView滚动的时侯会调用scrollView的这个代理方法,我们让代理执行代理方法,然后传送tableView滚动的Y值给到代理

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

if ([self.delegate respondsToSelector:@selector(KylinOneViewTableViewDidScroll:)]) {

[self.delegate KylinOneViewTableViewDidScroll:scrollView.contentOffset.y];

}

}

其次:让主控制器成为每一个tableView的代理,然后实现代理方法

- (void)KylinOneViewTableViewDidScroll:(CGFloat)scrollY{

}

然后:根据tableView滚动的Y值时时的更新tableViewHeader的frame.

解决切换控制时闪一下的BUG  在  方法  - (void)addChildViewInContentView:(NSInteger)index 中

添加 两句代码 

// 取出要跳转的view

KylinTwoViewController *twovc = (KylinTwoViewController *)childView;

// 跳转时滚动到当前view 的offsetY位置

[self KylinScrollToChangeHeaderViewHeight:twovc.tableView.contentOffset.y];

文章只能写个大体思路而已,具体代码请看我的源代码

新浪微博 火柴大男人


相关文章

网友评论

  • 土豆的疑问:你好,请教一下,在这个功能上再一个效果,就是在里面的tableView滑动到底部的时候最外层的tableView要接着滑动,请问怎么做,有思路吗能否讲解一下?
    火柴大男人:把里面tableview滑动的Y值传给外层的tableView 到需要的位置后.滚动最外层的tableView
  • 我的月亮你的心:兄弟效果有bug,下拉banner上下怎么两处都动了
    火柴大男人:@我的月亮你的心 不清楚你所说的问题是什么.能否祥细一点
  • coderYL:66666
  • dd1d1568f067:childView.view.frame = CGRectMake(index * kScreenW, OffsetY, kScreenW, kScreenH + 85);我试验了必须加上85才能显示完全,但是不明白其原理,求解释
  • WLAnswer:每个控制器那个OffsetY是什么意思,当返回4,5个cell的时候,滑动就显示不完所有的cell
    火柴大男人:@WLAnswer 每个控制器的 offsetY就是每个tableView Y滚动了多少,4.5个cell 显示不完所有的cell 是什么意思..是不是你的tableView content insets 没设置好
  • AppleIdGX:切换tableview后再滑动会抖一下。。。
    火柴大男人:@WLAnswer 有时间优化一下
    WLAnswer:@火柴大男人 大神,这个问题能优化一下吗!!!
    火柴大男人:@我帮你打水 不是抖动,是因为切换tableView时,上一个划动的值跟现在滑动的值有差距造成的这种错觉.这个有时间再优化
  • WGGHot:好。。。但是我做出来有一个bug一直没解决
    火柴大男人:@来自天王星的人儿 什么BUG
  • 9f53321e7222:不错不错

本文标题:多个tableView嵌套tableView Plain 样式下

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