UIPageControl未正确更新到UIPageViewController中当前页面的索引

问题描述 投票:0回答:1

我有一个带有以编程方式内置的PageControl的UIPageViewController。我有一个数组跟踪可以分页的视图控制器,我试图让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
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.