【问题标题】:UIPageControl not correctly updating to index of current page in UIPageViewControllerUIPageControl 未正确更新为 UIPageViewController 中当前页面的索引
【发布时间】: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


    【解决方案1】:

    这是因为您将pageControl的当前索引设置在错误的位置。您必须将其设置为:

    func pageViewController(UIPageViewController, willTransitionTo: [UIViewController]) Called before a gesture-driven transition begins.

    func pageViewController(UIPageViewController, didFinishAnimating: Bool, previousViewControllers: [UIViewController], transitionCompleted: Bool) Called after a gesture-driven transition completes. 两种方法都来自 UIPageViewControllerDelegate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多