iOS 双视图控制器在页面上一起滚动

Posted

技术标签:

【中文标题】iOS 双视图控制器在页面上一起滚动【英文标题】:iOS dual view controllers scroll together on a page 【发布时间】:2016-04-11 21:33:51 【问题描述】:

抱歉,我是 Objective c / ios 开发的新手。

所以我有两个视图控制器在一个用 Objective C 编写的 iOS 页面上显示不同的视图。

视图 1 是一个静态页面。 View 2 是一个可滚动列表(UICollectionViewDataSource),我打算在其中实现无限滚动。

现在视图 1 按预期上下滚动。视图 2 有时取决于您如何点击屏幕滚动与视图 1 一起滚动(它们一起上下移动),有时它在视图控制器 1 下滚动。如何创建它们一起滚动的永久行为?我希望它们像连接一样移动(就好像我正在滚动一个网页,该网页有一个可以向下滚动的表格)。

我四处搜索(我可能使用了错误的搜索词),但我看到的一切都与在两个或多个视图控制器之间切换有关。 (例如Swipe between two UIViewControllers' views)

如果不清楚我想要以下行为:

原始页面:

xxx
xyx
xxx
111
222

向下滚动:

xyx
xxx
111
222
333

继续滚动:

xxx
111
222
333
444

这种情况有时会发生,但我也看到了:

xxx
xyx
xxx
222
333

甚至:

xxx
xyx
xxx
(background color blank space)
111
222

它看起来明显不连贯。

【问题讨论】:

"所以我在一个 iOS 页面上有两个视图控制器" 不,你没有。视图控制器不是出现在界面中的东西。它是一个控制器,而不是一个视图。 为什么不把整个东西放在一个tableView中呢? @Jef 所以把静态页面放在标题中?表格视图? 当然。将零行放在第 0 节中,并将其(第 0 节的)标题视图用于上部容器。 【参考方案1】:

我没有对此进行编码,但我有一些想法。首先,我认为您将不得不挂钩表视图使用的滚动视图。在每个控制器中,我将为 UIScrollViewDelegate 方法添加覆盖,以便您可以检测到滚动。然后在这些方法中,更新另一个表视图的滚动视图位置。

这将是我的第一个方法。

【讨论】:

以上是关于iOS 双视图控制器在页面上一起滚动的主要内容,如果未能解决你的问题,请参考以下文章

在教程屏幕上使用滚动视图和页面控制器

使用滚动视图和页面控制?

使用 UIPageViewController 使 UI 滚动视图滚动

将两个 UIScrollView 连接在一起

页面控制内容覆盖 iOS

具有滚动效果的页面视图控制器与启用分页的 UIScrollView