我想创建一个在我的项目中使用的通用UIPageViewController。这就是它的样子。
滚动或点按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应该是通用的。
任何人都有更好的解决方案吗?