在 swift 3 中使用计时器自动更改 UIPageViewController 中的页面?

change pages in UIPageViewController Automatically with timer in swift 3?

我有 UIPageViewController 包含 4 个视图控制器

我设置了自动更改视图控制器的计时器(转到下一个视图控制器)- 这个计时器和方法会起作用但问题是它只适用于第一个幻灯片以及应用程序何时会 运行 5 秒后 UIPageViewController 将显示第二张幻灯片,但之后什么也不会发生! 这是我使用的代码

lazy var VCArr : [UIViewController] = {

    return [self.VCInstance(name : "VC1"),
            self.VCInstance(name : "VC2"),
            self.VCInstance(name :"VC3"),
            self.VCInstance(name :"VC4")]
}()

func changeSlide() {

    print("Slide Change!")


    guard let currentViewController = self.VCArr.first  else { return }

            guard let nextViewController = dataSource?.pageViewController( self, viewControllerAfter: currentViewController ) else { return }

            setViewControllers([nextViewController], direction: .forward, animated: true, completion: nil)

    }

var tTime: Timer!

override func viewDidLoad() {
    super.viewDidLoad()


    tTime = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(changeSlide), userInfo: nil, repeats: true)


    }

我认为问题出在这一行

guard let currentViewController = self.VCArr.first  else { return }

但我不知道如何更改此行才能正常工作

试试这个:

您可以通过 VCArr 的索引更改视图控制器。

var index = 0

func changeSlide() {
    index + 1
    if index < self.VCArr.count {
        setViewControllers([VCArr[index]], direction: .forward, animated: true, completion: nil)
    }
    else {
        index = 0
        setViewControllers([VCArr[0]], direction: .forward, animated: true, completion: nil)

    }
}