先看一下效果
需求:
? ? ? ?1.點擊Segement,tableViewCell滾動到相應(yīng)位置;
? ? ? ?2.滾動tableViewCell,Segenment按鈕做出相應(yīng)的切換。
實現(xiàn):
1.通過Segement點擊切換代理,按鈕的下標(biāo)既cell的行數(shù)骂因,達(dá)到點擊匹配相應(yīng)的行數(shù)。
-(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之后所以,下移相應(yīng)的高度跨扮,這里導(dǎo)航爛的高度與headerview的高度和為128。(見下圖)
NSIndexPath*path = [_tableViewindexPathForRowAtPoint:CGPointMake(xOffset, yOffset)];//根據(jù)滾動高度計算相應(yīng)行
NSLog(@"第%zd行",path.row);
//設(shè)置buttonView變化
[UIViewanimateWithDuration:0.25animations:^{
[buttonViewsetSelectButtonIndex:path.row];
}];
}
由此验毡,完成了相應(yīng)的需求衡创。
附Demo地址: