PageViewController current page index in Swift PageViewController current page index in Swift ios ios

PageViewController current page index in Swift


You can use didFinishAnimating, and set tags to viewcontrollers. try this

func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool){   if (!completed)  {    return  }  self.pageControl.currentPageIndex = pageViewController.viewControllers!.first!.view.tag //Page Index}


Add this code to your UIPageViewController.

var pages = [UIViewController]()var currentIndex: Int {    guard let vc = viewControllers?.first else { return 0 }    return pages.firstIndex(of: vc) ?? 0}


In Swift 3

Override didFinishAnimating function of UIPageViewControllerDelegate like this:

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {    if completed {        if let currentViewController = pageViewController.viewControllers![0] as? WalkthroughContentViewController {            pageControl.currentPage = currentViewController.index        }    }}

where WalkthroughContentViewController is the UIViewController presented by UIPageViewController

Remember to keep an index variable inside the WalkthroughContentViewController. Also, in the viewDidLoad method set:

delegate = self