您好,欢迎来到花图问答。
搜索
您的当前位置:首页多个tableView嵌套tableView Plain 样式下

多个tableView嵌套tableView Plain 样式下

来源:花图问答

1:如图实现下面的效果

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

实现方案:

第一:在控制器中添加三个了控件,最上面类似于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];

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


Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务