UITableView根据另一个UITableView自动滚动

时间:2012-04-18 02:22:38

标签: uitableview autoscroll simultaneous

是否可以产生以下效果:

当我滚动UITableView时,另一个UITableView会根据我正在移动的UITableView自动滚动。

NS:由于某些原因,无法将两个UITableView合并到一个UITableView中......

感谢。


我找到了一种方法并进行了测试。我不确定这是不是一个好方法。 执行UIScrollViewDelegate的scrollViewDidScroll,如下所示。 但我必须取消选中弹跳效果,因为它会使scrollViewDidScroll被多次调用一次滚动...

- (void)syncTableViews:(UIScrollView *)whatScrollView
{
    int tmpDesY = whatScrollView.contentOffset.y;
    BOOL tmpNeedSetTv00 = NO;
    BOOL tmpNeedSetTv01 = NO;
    BOOL tmpNeedSetTv02 = NO;

    if(whatScrollView == self.TableView00)
    {
        tmpNeedSetTv01 = YES;
        tmpNeedSetTv02 = YES;
    }
    else if(whatScrollView == self.TableView01)
    {
        tmpNeedSetTv00 = YES;
        tmpNeedSetTv02 = YES;
    }
    else if(whatScrollView == self.TableView02)
    {
        tmpNeedSetTv00 = YES;
        tmpNeedSetTv01 = YES;
    }

    if(tmpNeedSetTv00 == YES)
    {
        [self.TableView00 setContentOffset:CGPointMake(self.TableView00.contentOffset.x,tmpDesY) animated:NO];
    }    
    if(tmpNeedSetTv01 == YES)
    {
        [self.TableView01 setContentOffset:CGPointMake(self.TableView01.contentOffset.x,tmpDesY) animated:NO];
    }
    if(tmpNeedSetTv02 == YES)
    {
        [self.TableView02 setContentOffset:CGPointMake(self.TableView02.contentOffset.x, tmpDesY) animated:NO];
    }
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [self syncTableViews:scrollView];
}

1 个答案:

答案 0 :(得分:0)

UITableView用于委托UIScrollView,将UIScrollViewDelegate添加到您的类中 只需使用:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    UIScrollView *otherScrollView = (scrollView == self.tableViewHours ) ? self.tableViewDay : self.tableViewHours;
    [otherScrollView setContentOffset:[scrollView contentOffset] animated:NO];
}

问候。