【发布时间】:2018-01-02 23:34:31
【问题描述】:
我有一个 UIPageViewController 和一个以编程方式内置的 PageControl。我有一个数组来跟踪可以分页的视图控制器,我试图让 PageControl 显示与当前视图控制器相关的点页面。
我有以下代码用于向后和向前分页:
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.index(of: viewController) else {
return nil
}
let previousIndex = vcIndex - 1
guard previousIndex >= 0 else {return nil}
guard viewControllerList.count > previousIndex else {return nil}
self.pageControl.currentPage = previousIndex
return viewControllerList[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.index(of: viewController) else {return nil}
let nextIndex = vcIndex + 1
guard viewControllerList.count != nextIndex else {return nil}
guard viewControllerList.count > nextIndex else {return nil}
self.pageControl.currentPage = nextIndex
return viewControllerList[nextIndex]
}
当我将PageControl的当前页面设置为nextIndex或previousIndex时,我相信它应该为当前视图控制器的页面显示正确的点,但是它经常错过中间索引(总共三个点)。它通常只是在第 1 个和第 3 个点之间来回走动,并不准确。
如果有更好的方法可以做到这一点,我也会接受其他答案。
【问题讨论】:
标签: arrays swift uipageviewcontroller indexof uipagecontrol