Ios 以编程方式滚动UIPageViewController

Ios 以编程方式滚动UIPageViewController,ios,objective-c,swift,Ios,Objective C,Swift,我很难通过编程方式滚动嵌入主UIViewController中的UIPageViewController,以下是我的屏幕结构: 在屏幕底部,我使用UIPageViewController显示2个控制器 在我的屏幕顶部有一个UICollectionView,它不是pageViewController的一部分。 出于某些需要,我将collectionView的滚动与pagerViewController的滚动同步 现在我有了一个pagerViewController,当用户滚动到我的collecti

我很难通过编程方式滚动嵌入主
UIViewController
中的
UIPageViewController
,以下是我的屏幕结构:

在屏幕底部,我使用
UIPageViewController
显示2个控制器

在我的屏幕顶部有一个
UICollectionView
,它不是
pageViewController
的一部分。 出于某些需要,我将
collectionView
的滚动与
pagerViewController
的滚动同步

现在我有了一个
pagerViewController
,当用户滚动到我的
collectionView
时,它会滚动。我正在使用:
pagerScrollView.setContentOffset(CGPoint(…)
来实现这一点

我的问题是
UIPageViewController
使用其
GestureRecognitors
属性来正确调用其数据源方法。但是,当使用
pagerScrollView.setContentOffset
时,不会调用其数据源方法,因此不提供下一个控制器

这些不称为:

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
我试图调用
pagerController。在
ScrollView中的setViewControllers
将开始拖动
方法,但控制器立即更改,
UIPageViewController
不会保留正在传输的控制器

我的问题如下:

有没有办法告诉
UIPageViewController
下一个/之前是哪个控制器而不丢失当前转换的控制器?或者有没有办法使用我的寻呼机上的
setContentOffset
方法触发数据源方法

当滚动到
pagerViewController
时,显然一切都正常,因为调用了它的数据源方法


有什么想法吗?

如果你只有两个控制器,我建议不要使用
UIPageViewController
。相反,使用标准的
UIScrollView
,将这两个控制器添加为子VCs,并将它们的视图添加到滚动视图。最后,我用
UIScrollView
替换寻呼机来解决这个问题,它工作得很好。我认为使用
UIPageViewController
无法实现我想要的功能。谢谢@DonMag。