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

时间:2017-07-11 03:54:13

标签: ios swift3 timer uiviewcontroller uipageviewcontroller

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

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

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)


    }

但我不知道如何改变这一行以正常工作

1 个答案:

答案 0 :(得分:2)

试试这个:

您可以按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)

    }
}