与另一个UItableview同时滚动其他UITableview

时间:2013-05-16 09:02:19

标签: iphone ios objective-c uitableview uiscrollview

我有一个非常复杂的观点。我基本上有以下

enter image description here

你可以看到我有vertical tableview。在每个单元格中,我有一个horizontal tableview。我现在要做的是当我滚动一个horizontal tableview时,每个其他水平tableview也应该滚动。

在我的垂直tableviewCell的子类中,我有以下内容。

  for(HorizontalTableCell *cell in mainTable.subviews){
        if([cell isKindOfClass:[HorizontalTableCell class]]){
            for(UITableView *cellTable in cell.subviews){
                if([cellTable isKindOfClass:[UITableView class]]){
                    NSLog(@"cell table is table %@",cellTable);
                    [cellTable setContentOffset:CGPointMake(scrollView.contentOffset.x, 0) animated:NO];
                }
            }
        }
    }

但这不行。有人可以帮我吗?

2 个答案:

答案 0 :(得分:4)

您需要使用滚动视图委托方法。我建议发布一个通知,然后在单元格中将其提取出来......

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"CellScrolledHorizontally" object:self.tableView];
}

然后在水平单元格中,您可以观察到通知。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrolled:) name:@"CellScrolledHorizontally" object:nil];

- (void)scrolled:(NSNotification *)notification 
{ 
    UITableView *notificationTableView = notification.object; 

    if (notificationTableView == self.tableView) 
        return; 

    [self.tableView setContentOffset:notificationTableView.contentOffset]; 
}

或者,使用UICollectionView

答案 1 :(得分:0)

你可以试试这个逻辑:

而不是Horizontal tableviews使用UIScrollView。现在基数是UITableView horizontal scrollviews。现在使用UIScrollview delegate方法进行事件处理。

虽然这不是解决方案,但您可以查看EASYTABLEVIEW