使用一个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的主要内容,如果未能解决你的问题,请参考以下文章
Swift iOS -CollectionView 如何将单元格滚动到屏幕外
iOS CollectionView 具有水平分页而不是垂直滚动
为啥当我向下滚动iOS(tableView内的collectionview)时取消选择单元格?