确定我的UIPageViewController刷卡方向的最佳方法是什么?

时间:2015-05-11 00:09:29

标签: ios objective-c xcode swipe uipageviewcontroller

我已经设置了一个UIPageViewController,它具有五个视图控制器,用户可以在循环之间滑动。

我使用这些两个方法两个增加或减少一个名为swipeTotal的 int变量,我用它来确定数组的索引所以我可以使用五个循环的视图控制器显示来自数组的 200个不同的字符串。

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
         viewControllerBeforeViewController:(UIViewController *)viewController {

    swipeTotal = swipeTotal - 1;
}

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
          viewControllerAfterViewController:(UIViewController *)viewController
    {

    swipeTotal = swipeTotal + 1;
}

这似乎可以确定用户是向前还是向后滑动,但是每次滑动方向改变时,这两种方法似乎被称为两次导致swipeTotal 不同步每次用户更改方向时进行1次滑动。

我无法使用此方法,因为我希望swipeTotal int变量在用户向前滑动时增加,如果每次向后滑动并且不会被偶尔被调用的方法取消,则需要减少。< /强>

那么确定用户滑动方向的最佳方法是什么,这样我可以相应地增加或减少一个int变量?我试图找到一种方法,但没有运气,必须有一个简单的方法来做到这一点?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用willTransitionTo确定nextIndex,然后分配实际值 didFinishAnimating

func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]){

                guard let viewController = pendingViewControllers.first else { return }
                guard let index = viewControllers.index(of: viewController) else { return }

                nextPage = index
            }
    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {

                if completed {

                   currentPage = nextPage

                }


            }