多个tableView嵌套tableView Plain 样式下的效果实现

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 Plain 样式下的效果实现)