2

私はかなり複雑な見方をしています。私が基本的に持っているのは次のとおりです

ここに画像の説明を入力

あなたは私が持っていることがわかりますvertical tableview。各セルにはhorizontal tableview. 私が今やりたいことは、1つスクロールするとhorizontal 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];
                }
            }
        }
    }

しかし、これはうまくいきません。誰でもこれで私を助けることができますか?

4

2 に答える 2

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ます。

于 2013-05-16T09:08:45.047 に答える
0

このロジックを試すことができますか:

Horizontal tableviewsを使用する代わりにUIScrollView. これで、ベースUITableViewhorizontal scrollviews. UIScrollview delegateイベント処理にメソッドを使用します。

これは解決策ではありませんが、 EASYTABLEVIEWを見ることができます

于 2013-05-16T09:22:00.387 に答える