gpt4 book ai didi

arrays - UIPageControl 未正确更新为 UIPageViewController 中当前页面的索引

转载 作者:行者123 更新时间:2023-11-28 15:08:23 25 4
gpt4 key购买 nike

我有一个以编程方式内置的带有 PageControl 的 UIPageViewController。我有一个跟踪可以分页的 View Controller 的数组,我试图让 PageControl 显示与当前 View Controller 相关的点页面。

我有以下用于向后和向前分页的代码:

   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 时,我相信它应该为正在显示的当前 View Controller 的页面显示正确的点,但是它经常错过中间索引(总共三个点).它通常只是在第 1 个和第 3 个点之间来回移动,并且不准确。

如果有更好的方法,我也会接受其他答案。

最佳答案

是因为你把pageControl的当前索引设置错了。您必须将其设置为:

func pageViewController(UIPageViewController, willTransitionTo: [UIViewController])
在手势驱动的转换开始之前调用。

func pageViewController(UIPageViewController, didFinishAnimating: Bool, previousViewControllers: [UIViewController], transitionCompleted: Bool)
在手势驱动的转换完成后调用。
这两个方法都来自 UIPageViewControllerDelegate

关于arrays - UIPageControl 未正确更新为 UIPageViewController 中当前页面的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com