Swift 如何让容器视图的内容与父表视图同步滚动?

How to get contents of container view to scroll in sync with parent tableview in Swift?

我有一个 table 视图控制器,它包含一个视图,下面是 2 个容器视图。每个容器视图包含带有一些数据的单独 table 视图(参见图表)。

段控件用于在哪些容器视图可见之间切换。

容器视图中的内容超出了主屏幕的高度。

当前,父 table 视图控制器正在独立滚动到容器视图中的 table 视图,这是预期的。

如何同步容器视图和父table视图一起滚动?

当前层次结构如下图所示:

Current view controller hierarchy

通常有这种UX/UI不是一个好主意。我个人讨厌这个用户体验。
但是要回答您的问题,您可以使用 KVO 观察两个子 tableView 的 contentOffset 属性,并通过适当的计算相应地更新父 tableView 的 contentOffset。

顺便说一句,您可以使用常规 UIViewController 和 UIScrollView 作为 containerView 而不是 UITableViewController


对我来说,理想的方法是拥有一个单一的 tableView,并动态加载所有内容。 F.e。您可以在 tableViewHeaderView 中拥有段控件(和所有静态数据),并且根据选择的选项卡,您可以通过将第一个选项卡的数据源数组切换到第二个选项卡的数组来相应地更新 tableView 的内容,反之亦然. 即使两个选项卡的单元格 UI 不同,您也可以根据所选选项卡使两个不同的单元格出队。