Search code examples
iosswiftuipageviewcontroller

Swift 4 auto slide in page view controller with help of timer


I am trying to create auto sliding in page view controller using swift 4. Here, I tried below code but I am getting result, it's repeating first index of image. I need to know, how to implement for move on next index?

// Image array
var name = ["one.png","two.png","three.png","four.png"]

// Timer in viewdidload()
tTime = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(changeSlide), userInfo: nil, repeats: true)

// Timer function call (The problem is here...)
@objc func changeSlide() { 
        let pageContentViewController = self.viewControllerAtIndex(index: 0)
        self.pageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: nil)
} 

Solution

  •     // Image array
        var name = ["one.png","two.png","three.png","four.png"]
        var currentIndex = -1
    
        // Timer in viewdidload()
        tTime = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(changeSlide), userInfo: nil, repeats: true)
    
    
        // Timer function call
        @objc func changeSlide() 
       {
        currentIndex = (currentIndex == name.count - 1) ? 0 : currentIndex + 1
    
        let pageContentViewController = self.viewControllerAtIndex(index: currentIndex)
        self.pageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.forward, animated: true, completion: nil)
    }