使用一个collectionview IOS滚动多个UICollectionView

使用一个collectionview IOS滚动多个UICollectionView,ios,objective-c,ipad,uicollectionview,collectionview,Ios,Objective C,Ipad,Uicollectionview,Collectionview,我正在开发一个应用程序,其中,我有UITableView,在UITableView的每个单元格中,我有水平滚动的uicollectionview 现在,我想要的是:当我向任何方向滚动一个collectionview时,表中的所有其他collectionview都应相应地向该方向滚动 我尝试过使用scrollview代理,但它不能正常工作 我被困在这个问题上。我在网上查过了,但什么也没找到 需要帮助!谢谢您可以通过将包含的视图控制器声明为UITableViewDelegate并实现scrollVi

我正在开发一个应用程序,其中,我有UITableView,在UITableView的每个单元格中,我有水平滚动的uicollectionview

现在,我想要的是:当我向任何方向滚动一个collectionview时,表中的所有其他collectionview都应相应地向该方向滚动

我尝试过使用scrollview代理,但它不能正常工作

我被困在这个问题上。我在网上查过了,但什么也没找到


需要帮助!谢谢

您可以通过将包含的视图控制器声明为UITableViewDelegate并实现scrollView委托方法来协调两个TableView:

// say tv0 and tv1 are outlets to two table views
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == self.tv0) {
        self.tv1.contentOffset = self.tv0.contentOffset;
    } else if (scrollView == self.tv1) {
        self.tv0.contentOffset = self.tv1.contentOffset;
    }
}

为了掌握诀窍,首先使用两个具有相同长度内容的简单表视图。当一个视图的contentSize大于另一个视图时,您需要添加条件逻辑来处理。

好的,我已经检查了我的代码,我所做的是:我在屏幕的左侧有一个tableView,其余的是一个UIScrollView,在它的顶部有一个宽度等于collectionView.contentSize.width的视图,在该视图的下方,collectionView,其高度等于屏幕高度,宽度等于contentSize.width。之后,ScrollView只水平滚动,collectionView只垂直滚动,因此,当您水平滚动时,tableView保持不变,header视图和collection水平滚动,如果您垂直滚动,header视图保持不变,collection视图和tableView同时滚动(您必须链接他们的代表)

这就是我在UIScrollViewDelegate中所做的

pragma标记-UIScrollViewDelegate
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
如果(滚动视图==\u滚动视图){
if(scrollView.contentOffset.y>0 | | scrollView.contentOffset.y<0){
scrollView.contentOffset=CGPointMake(scrollView.contentOffset.x,0);
}
}否则{
_tableView.contentOffset=CGPointMake(0,scrollView.contentOffset.y);
_collectionView.contentOffset=CGPointMake(0,scrollView.contentOffset.y);
}
}

tableView的单元格高度和collectionView的单元格高度是相同的。

但是,如果我理解你的问题,你只需要collection视图,为什么你需要tableView?实际上我有多个数组填充collectionView。因为它们都是不同类型的,显示不同的数据。这就是为什么ng据我所知,我使用了这两种方法。因此,在每一行中都有不同的数据,比如第一行是字符串数组,第二行是数字数组,等等?您应该显示您尝试过的代码。在任何情况下,由于单元格重复使用,它只适用于可见单元格。我希望这样:当您滚动任何collectionv时查看,然后每隔一个collectionview也会滚动。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == _scrollView) {
        if (scrollView.contentOffset.y > 0  ||  scrollView.contentOffset.y < 0 ) {
            scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
        }
    } else {
        _tableView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
        _collectionView.contentOffset = CGPointMake(0, scrollView.contentOffset.y);
    }
}