功能如图,有表头,项目,可以增删行列
基本组成 tableView +CollectionView;
表头是headView+ CollectionView
行组成 label + CollectionView
主要技术点是在联动上,滑动cell上的item或者header的item要形成一个整体
tableView 和 CollectionView都继承与scrollView
我们可以让他们contentOffset保持一致
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if ([scrollView isKindOfClass:[UICollectionView class]]) {
if (scrollView.contentOffset.y != 0) {
scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
return;
}
for (TJXExcelTableViewCell* cell in self.tableView.visibleCells) {
for (UIView *view in cell.contentView.subviews) {
if ([view isKindOfClass:[UICollectionView class]]) {
UICollectionView *collectionView = (UICollectionView *)view;
collectionView.contentOffset = scrollView.contentOffset;
}
}
}
//
[self.parm setValue:[NSValue valueWithCGPoint:scrollView.contentOffset] forKey:JXContentTableViewCellCollectionViewObserver];
}
}
#pragma mark lazyLoading
-(UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, LSDScreenW, LSDScreenH-64) style:(UITableViewStylePlain)];
_tableView.delegate = self;
_tableView.dataSource = self;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
self.tableView.bounces = NO;
self.tableView.showsVerticalScrollIndicator = NO;
self.tableView.showsHorizontalScrollIndicator = NO;
}
return _tableView;
}
-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{
if ([keyPath isEqualToString:TopCollectionViewObserver]) {
for (TJXExcelTableViewCell* cell in self.tableView.visibleCells) {
for (UIView *view in cell.contentView.subviews) {
if ([view isKindOfClass:[UICollectionView class]]) {
UICollectionView *collectionView = (UICollectionView *)view;
collectionView.contentOffset = topview.collectionView.contentOffset;
}
}
}
}
if ([keyPath isEqualToString:JXContentTableViewCellCollectionViewObserver]) {
for (TJXExcelTableViewCell *cell in self.tableView.visibleCells) {
for (UIView *view in cell.contentView.subviews) {
if ([view isKindOfClass:[UICollectionView class]]) {
UICollectionView *collectionView = (UICollectionView *)view;
topview.collectionView .contentOffset = collectionView.contentOffset;
}
}
}
}
}