【发布时间】:2020-08-19 22:03:53
【问题描述】:
我正在尝试创建一个页面视图控制器,一旦您到达最后一个屏幕(向右滑动),它就会从第一个屏幕重新开始,如果您向后滚动,一旦它到达第一个屏幕(向左滑动)它将滚动到最后。
我看了这篇文章: scroll in circles
但滚动时它仍会停在第一个和最后一个屏幕上。以下是我的数据源的设置方式:
var viewControllerList: [UIViewController]!
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.firstIndex(of: viewController) else {return nil}
let previousIndex = vcIndex - 1
guard previousIndex >= 0 else {return viewControllerList.last}
guard viewControllerList.count > previousIndex else { return nil}
return viewControllerList[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.firstIndex(of: viewController) else {return nil}
let nextIndex = vcIndex + 1
guard viewControllerList.count != nextIndex else {return nil}
guard viewControllerList.count > nextIndex else
{
return viewControllerList.first}
return viewControllerList[nextIndex]
}
感谢任何帮助!
【问题讨论】:
-
这是因为你
return nil所在的行。只要你这样做,就意味着“不可能再往这个方向走”。但我相信您的要求是总是可以在任一方向上走得更远。 :) -
@matt 就是这样!非常感谢。我想将此标记为正确答案。
-
那我就直接写评论吧。
标签: ios swift uipageviewcontroller uipagecontrol