0

是否有可能产生这样的效果:

当我滚动 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];
}
4

1 回答 1

0

UITableView 作为委托 UIScrollView,将 UIScrollViewDelegate 添加到您刚刚使用的类中:

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

问候。

于 2012-11-15T15:32:19.130 回答