先看一下效果
需求:
1.点击Segement,tableViewCell滚动到相应位置;
2.滚动tableViewCell,Segenment按钮做出相应的切换。
实现:
1.通过Segement点击切换代理,按钮的下标既cell的行数,达到点击匹配相应的行数。
-(void)didClickTypeButtonAction:(UIButton*)button withIndex:(NSInteger)index{
NSLog(@"%zd",index);
[_tableViewselectRowAtIndexPath:[NSIndexPathindexPathForRow:indexinSection:0]animated:YESscrollPosition:UITableViewScrollPositionTop];
}
2.UITableView继承UIScrollView, 你可以实作下面这个UIScrollView的protocal, 会在滚动停止告诉你offset
-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
NSLog(@"yOffset:%f",scrollView.contentOffset.y);
CGFloatxOffset = scrollView.contentOffset.x;
CGFloatyOffset = scrollView.contentOffset.y+128;//由于cell的其实位置是在headerview之后所以,下移相应的高度,这里导航烂的高度与headerview的高度和为128。(见下图)
NSIndexPath*path = [_tableViewindexPathForRowAtPoint:CGPointMake(xOffset, yOffset)];//根据滚动高度计算相应行
NSLog(@"第%zd行",path.row);
//设置buttonView变化
[UIViewanimateWithDuration:0.25animations:^{
[buttonViewsetSelectButtonIndex:path.row];
}];
}
由此,完成了相应的需求。
附Demo地址: