嵌套在 UIScrollView 中时保持 UITableView 的重用能力

Posted

技术标签:

【中文标题】嵌套在 UIScrollView 中时保持 UITableView 的重用能力【英文标题】:Keeping reuse capabilities of UITableView when it is nested in a UIScrollView 【发布时间】:2014-09-16 16:11:33 【问题描述】:

为了在 ios 应用程序中实现相当复杂的屏幕设计,我在 UIScrollView 中嵌套了一个 UITableView。

为了保持逻辑简单,我在 UITableView 上实现了一个计算其整个高度的方法,我使用该方法的结果并在嵌套表视图上设置约束,以便滚动逻辑可以单独在UIScrollView 来处理。 (我从UITableView转发scrollRectToVisible等方法到UIScrollView)

虽然这适用于小型数据集,但我最近发现 UITableView 的重用功能没有被使用,因为框架认为当我设置高度约束时整个 UITableView 都是可见的。 cellForRowAtIndexPath 方法中的一个简单日志方法显示所有单元格一次计算。

我的问题是,我能做些什么来告诉嵌套的 UITableView 有多少实际上在屏幕上可见,并且只计算那些可见的单元格?

我基本上需要覆盖 UITableView 中负责计算哪些单元格应该在屏幕上可见的任何部分。

【问题讨论】:

见oleb.net/blog/2014/05/scrollviews-inside-scrollviews 【参考方案1】:

表格视图会认为自己用单元格填充它的整个框架。如果您限制高度,它将限制可见的单元格计数。你是否使用了带重用标识符方法的双端队列(如果没有见下文)

How can I recycle UITableViewCell objects created from a XIB?

【讨论】:

以上是关于嵌套在 UIScrollView 中时保持 UITableView 的重用能力的主要内容,如果未能解决你的问题,请参考以下文章

包含在嵌入导航控制器的视图控制器中时,UIScrollView 不滚动

当场景嵌入到 NavigationController 中时,如何防止 UIScrollView 被下推?

UIButton 没有响应嵌套在另一个 UIScrollView 中的 UIScrollView 中的触摸

尝试在 UIScrollview 中设置宽图像,高度固定

多层UIScrollView 嵌套滚动

嵌套在 UIScrollview 中的 ViewController 中的 presentModalViewController?