使用一个collectionview IOS滚动多个UICollectionView

Posted

技术标签:

【中文标题】使用一个collectionview IOS滚动多个UICollectionView【英文标题】:Scroll Multiple UICollectionView with one collectionview IOS 【发布时间】:2014-11-05 15:57:49 【问题描述】:

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

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

我尝试过使用滚动视图代理,但它不能正常工作。

我陷入了这个问题。我在互联网上看过,但还没有找到任何东西。

需要帮助!谢谢

【问题讨论】:

但是,如果我理解你的问题,你只需要collection view,为什么需要tableview? 实际上我有多个数组填充collectionview。因为它们都是不同的类型,显示不同的数据。这就是为什么,根据我的理解,我同时使用了这两种方法。 所以每一行都有不同的数据,比如第一行是字符串数组,第二行是数字数组,等等? 您应该显示您尝试过的代码。无论如何,由于单元重用,它只适用于可见单元。 我想要这样的东西:connectedhome2go.files.wordpress.com/2010/05/… 当您滚动任何集合视图时,其他所有集合视图也会滚动。 【参考方案1】:

好的,我检查了我的代码,我所做的是:我在屏幕左侧有一个 tableView,其余的是一个 UIScrollView,在它里面我在顶部有一个宽度等于collectionView.contentSize.width,在该视图下方,collectionView,其高度等于屏幕高度,其宽度等于其 contentSize.width。之后,ScrollView 只水平滚动,collectionView 只垂直滚动,所以,当你水平滚动时,tableView 保持不变,而 header view 和 collection 水平滚动,如果你垂直滚动,header view 保持固定,并且集合视图和 tableView 同时滚动(您必须链接它们的委托)。

这就是我在 UIScrollViewDelegate 中所做的

pragma mark - UIScrollViewDelegate

- (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);
    

tableView的单元格高度和collectionView的单元格高度一致。

【讨论】:

【参考方案2】:

您可以通过将包含视图控制器声明为 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 大于另一个视图时,您需要添加条件逻辑来处理。

【讨论】:

以上是关于使用一个collectionview IOS滚动多个UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

iOS:滚动时的 CollectionView 棒头

Swift iOS -CollectionView 如何将单元格滚动到屏幕外

iOS CollectionView 具有水平分页而不是垂直滚动

为啥当我向下滚动iOS(tableView内的collectionview)时取消选择单元格?

当collectionView滚动时,如何使iOS collectionView的特定单元格淡出?

ios collectionview 怎么使cell滚动到指定的位置