如何跟踪UIPageViewController的索引?

时间:2017-04-25 18:08:43

标签: ios swift uipageviewcontroller

我想创建一个在我的项目中使用的通用UIPageViewController。这就是它的样子。

UIPickerViewController

滚动或点按titleView中的数字时,页面视图应滚动到相应的索引,标题中的相应数字应突出显示。但是当快速滚动到下一页并向后滚动时会出现错误,标题视图的状态不正确。

例如,如果我在第2页,然后滚动到第3页并快速向后滚动,现在我在第2页,但3的按钮突出显示。

以下是密码:

//Delegaete

func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
    willShowPageIndex = getIndex(ofController: pendingViewControllers[0])
}

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
    guard completed else { return }
    // track the index
    selectedPage = willShowPageIndex
}

fileprivate var selectedPage = 0 {
    didSet {
         //Change the button's font color, and move the underline
        changeShowStatus(oldPage: oldValue, newPage: selectedPage)
    }
}

似乎在快速滚动页面视图时,pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController])没有调用。也许在数据源控制器的viewWillAppear中发布通知可以避免这个问题,但我不希望这导致这个PageViewController应该是通用的。

任何人都有更好的解决方案吗?

0 个答案:

没有答案