UIPageViewControllerDataSource
代表有两种必需的方法:viewControllerBeforeViewController
和viewControllerAfterViewController
。
我遇到了一个问题。这是我正在使用的代码。
func pageViewController(pageViewController: UIPageViewController,
viewControllerBeforeViewController ProView: UIViewController) -> UIViewController? {
// ...
print("You swiped BACK")
return: nil
}
和
func pageViewController(pageViewController: UIPageViewController,
viewControllerAfterViewController ProView: UIViewController) -> UIViewController? {
...
println("You swiped FORWARD")
return nil
}
以下是重现问题的步骤:
你刷了回来 你向前翻了
当我向左滑动时会发生这种情况。为什么控制台打印它们而不仅仅打印一个?
答案 0 :(得分:3)
这种情况正在发生,因为在转换时调用这两个函数,因为所有3个(前一个,当前一个和下一个)视图控制器都被实例化。因此,当您转换到视图控制器2时,视图控制器1和3将被实例化。
func pageViewController(pageViewController: UIPageViewController,
viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
func pageViewController(_ pageViewController: UIPageViewController,
viewControllerAfterViewController viewController: UIViewController) -> UIViewController?
这些函数不指示用户滑动的方向,而是指示下一个和上一个视图控制器
要进行滑动,您需要实施UIPageViewControllerDelegate
及其pageViewController:willTransitionToViewControllers:
或pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:
个功能,或者将观察者添加到UIPageViewController
的手势识别器