具有共享滚动手势的嵌套 UITableView

Posted

技术标签:

【中文标题】具有共享滚动手势的嵌套 UITableView【英文标题】:Nested UITableViews with shared scroll gesture 【发布时间】:2017-08-23 18:46:44 【问题描述】:

我正在尝试在另一个UITableView 的页脚中嵌入UITableView。结果是一个表格视图,其中一个部分(或特定的页脚)包含两个用户可以水平滚动的表格视图。表格视图的垂直滚动不应该嵌套,这意味着您将永远无法滚动嵌套的表格视图而不滚动外部表格视图。这就是困难的地方,因为嵌套表格视图的大小需要允许外部滚动仍然处于活动状态,同时还允许单元格重用。

建议一

将两个嵌套的表格视图嵌入到页脚的UIPageViewControllerUIScrollViewinside 中。通过使用这种方法,我可以轻松创建我想要的 UI,问题归结为滚动和性能。首先,嵌套视图控制器的内容大小是多少?如果将其设置为与超级视图相同,则滚动将仅在嵌套表视图内部处理,外部表视图不会滚动。如果我将内容大小设置为足够大以包含每个单元格,则滚动按预期工作,但不再可用重用单元格,因为所有单元格将同时出列。不好。

对此的一种可能解决方案是将嵌套表视图的大小设置为超级视图的大小,并且仅在覆盖整个屏幕时才启用它的滚动。这将允许用户在外部滚动视图中正常滚动,一旦嵌套表视图完全呈现,我们切换到滚动该视图。

建议二

坚持使用单一的表格视图,并想办法让某个部分水平滚动。我还不知道这是否可能。

【问题讨论】:

【参考方案1】:

编辑 1: 澄清一下,您所尝试的不需要表视图的页脚是另一个表视图。相反,我们可以创建一个带有子类UITableViewCells 的表视图,并通过在内部表视图上设置属性来填充cellForRowAtIndexPath 中的表视图。如果需要,这使您可以灵活地控制添加/删除更多表视图。确保将内部表格视图的数据源设置为外部表格视图以外的其他内容,否则可能会导致问题。

如果我正确理解您的目标,您可以这样做的一种方法是制作 2 个表格视图,并通过子类化 UITableViewCell 并在其中放置一个表格视图来制作一个新的动态表格视图单元格。不过,您必须调整高度,以便每个表格视图都适合它们各自的单元格。

从那里,您只需将您创建的属性 innerTableView 上的 Horizo​​ntalScrollingEnabled 设置为 true。希望这有帮助!谢谢! :)

【讨论】:

【参考方案2】:

您可以尝试在 tableView 的每个单元格中使用集合视图

【讨论】:

以上是关于具有共享滚动手势的嵌套 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

中心控制器具有滚动视图时的 MMDrawerController 平移手势行为

具有自定义流布局的 UICollectionView - 在具有活动平移手势的情况下滚动时单元格出现故障

tableView的嵌套

具有水平滚动的嵌套 RecyclerView 中的滚动行为

从另一个视图将滚动手势传递给 UIScrollView

具有水平滚动的嵌套 UIScrollViews