在UIPageViewController中更改页面自动使用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) } }