在 ScrollView 中滚动 TableView

Posted

技术标签:

【中文标题】在 ScrollView 中滚动 TableView【英文标题】:Scroll TableView inside ScrollView 【发布时间】:2016-09-14 06:05:53 【问题描述】:

我在scrollView 中有一个tableView

我希望当我滚动tableView 时,外部scrollView 也会滚动。

目前,当我滚动tableView 时,外部scrollView 不滚动。

那么该怎么做呢?

【问题讨论】:

将tableview scrollEnabled设置为NO,并再次计算包含视图高度以适应tableview高度 感谢您的建议,@ABáo scrollView 中将显示多少内容,您不能简单地将headerView 添加到tableView 中吗? 这里只是一个示例,在我的真实项目中,它包含一个可以切换到 4 种模式的容器视图。 scrollView 中的内容取决于其中的tableView 【参考方案1】:

//例如声明要添加的视图为滚动视图

let requiredView = UIScrollView()

//将你需要的视图添加为tableview backgroundView view的子视图,如

tableView.backgroundView = UIView() 
tableView.backgroundView?.addSubview(requiredView)

//之后在scrollViewDidScroll委托方法中控制requiredHeaderView的frame

func scrollViewDidScroll(scrollView: UIScrollView) 
         let per:CGFloat = 60 //percentage of required view to move on while moving collection view
                let deductValue = CGFloat(per / 100 * requiredView.frame.size.height)
                let offset = (-(per/100)) * (scrollView.contentOffset.y)
                let value = offset - deductValue                   
                self.requiredView.contentOffset = CGPointMake(1.0, value)
        

【讨论】:

滚动tableView时,外层scrollView不滚动。 如果你没有为 scrollView 设置 contentSize 尝试像这样设置 requiredView.contentSize = CGSizeMake(320, 500) 我已经在storyBoard中为scrollView设置了contentSize。 发布有关您如何尝试的代码。这样我就可以提供帮助。 您在哪里尝试过我的答案?scrollViewDidScroll 方法包含与我发布的答案不同的内容。在我的回答中,scrollViewDidScroll 方法中的“值”是用于移动滚动视图的 contentOffset.y 值。这样您就可以相应地滚动滚动视图。

以上是关于在 ScrollView 中滚动 TableView的主要内容,如果未能解决你的问题,请参考以下文章

在 ScrollView 中滚动 TableView

scrollView 中scrollView 的水平滚动 - 小问题

在 ScrollView 中隐藏滚动条

如何设置scrollView 横向滚动

无法在 scrollView 中滚动

我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?