我有一个非常复杂的观点。我基本上有以下
你可以看到我有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];
}
}
}
}
但这不行。有人可以帮我吗?
答案 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