如何同时滚动多个tableview

Posted

技术标签:

【中文标题】如何同时滚动多个tableview【英文标题】:How to scroll multiple tableview simultaniously 【发布时间】:2015-10-13 06:08:01 【问题描述】:

2 Tableviews 在具有不同大小的单元格高度的ViewController 中。当我滚动 view controller 时,需要同时滚动 tableview cell 两个表格单元格也需要同时隐藏。

顶部tableview中单元格的200px height,底部tableview中50px height

当我滑动 100 像素时,顶部表格单元格滚动 100 像素,底部表格单元格应滚动 25 像素。

这种平行滚动是否可行?任何建议.. 提前致谢

【问题讨论】:

【参考方案1】:

由于UITableview 派生自UIScrollview,您可以在委托方法中获取滚动量

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

您可以获取正在滚动的滚动视图的内容偏移量并将其分配给另一个表视图。

在这种方法中,您应该能够访问两个表视图。

你需要检查的属性是 contentOffset。

firsttableview.contentOffset = scrollview.contentOffset

【讨论】:

谢谢,我已经使用了你提到的代理,现在两个 tableviews 以相同的 px 高度同时滚动。我可以知道如何更改内容偏移大小,以便在第一个表中滚动为 200 像素,在第二个表中滚动为 50 像素。 firsttableview.contentOffset = scrollview.contentOffset+200 试试这个。【参考方案2】:

您可以使用UIScrollView的这个功能来滚动多个UITables并行

func scrollViewDidScroll(scrollView: UIScrollView) 

    if scrollView == tableView1 
        self.tableView1.contentOffset = CGPointMake(0, scrollView.contentOffset.y)
        self.tableView2.contentOffset = CGPointMake(0, scrollView.contentOffset.y)
    
    else if scrollView == self.tableView2!
    
        self.tableView1.contentOffset = CGPointMake(0, scrollView.contentOffset.y)
    
    else if scrollView == self.bottomMenu_grid!
    
        print(scrollView.contentOffset.x)
        self.tableView2.contentOffset = CGPointMake(scrollView.contentOffset.x, scrollView.contentOffset.y)
    

【讨论】:

以上是关于如何同时滚动多个tableview的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个小部件同时添加到滚动视图?

Windows 窗体同时滚动多个列表框

FLUTTER 滚动多个小部件

同时滚动和捏合多个 UiScrollView

排列多个scrollView

如何隐藏水平滚动条并保持垂直滚动条可见,同时仍然能够水平滚动?