使用Swift的UIPageViewControllerDataSource问题

时间:2015-01-11 21:14:02

标签: ios swift uipageviewcontroller

UIPageViewControllerDataSource代表有两种必需的方法:viewControllerBeforeViewControllerviewControllerAfterViewController

我遇到了一个问题。这是我正在使用的代码。

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
}

以下是重现问题的步骤:

  • 我向右滑动
  • 控制台的输出是
  

你刷了回来   你向前翻了

当我向左滑动时会发生这种情况。为什么控制台打印它们而不仅仅打印一个?

1 个答案:

答案 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的手势识别器