我正在开发一个应用程序,其中我有UITableView,在uitableview的每个单元格中,我都有uicollectionview水平滚动。
现在,我想要的是:当我向任何方向滚动一个集合视图时,我的表的所有其他集合视图应该在该方向上相应地滚动。
我尝试使用scrollview委托,但它无法正常工作。
我陷入了这个问题。我已经在互联网上看了,但还没找到任何东西。
需要帮助!感谢
答案 0 :(得分:5)
好的我已经检查了我的代码,我的工作是:我在屏幕的左侧有一个tableView,其余的是UIScrollView,在里面我有一个宽度等于的视图collectionView.contentSize.width,在该视图下方,collectionView,其高度等于屏幕高度,其宽度等于其contentSize.width。之后,ScrollView只能水平滚动,而collectionView只能垂直滚动,所以,当你水平滚动时,tableView会停留,标题视图和集合会水平滚动,如果你垂直滚动,标题视图会保持不变,并且集合视图和tableView同时滚动(你必须链接他们的代表)。
这就是我在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单元格的高度相同。
答案 1 :(得分:2)
您可以通过将包含视图控制器声明为UITableViewDelegate并实现scrollView委托方法来协调两个tableviews:
// 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大于另一个视图的时间。