PageViewController current page index in Swift

前端 未结 12 2280
你的背包
你的背包 2021-02-01 15:37

I want to get current index of a pageViewController, I don\'t know how I get the visible pages index.

func pageViewController(pageViewController: UIPageViewContr         


        
12条回答
  •  误落风尘
    2021-02-01 16:10

    Dont forget to set pageviewcontroller's delegate.

     func createPageViewController() {
        // Create page view controller
        pageViewController = storyboard?.instantiateViewController(withIdentifier: "PageViewController") as? UIPageViewController
        pageViewController?.delegate = self
        pageViewController?.dataSource = self
    
        let startingViewController: ChildViewController = viewControllerAtIndex(index: 0)!
        let viewControllers: Array = [startingViewController]
        pageViewController?.setViewControllers(viewControllers, direction: .forward, animated: true, completion: nil)
    
        self.addChildViewController(pageViewController!)
        self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)
        self.view.addSubview((pageViewController?.view)!)
        self.pageViewController?.didMove(toParentViewController: self)
    }
    
    func viewControllerAtIndex(index: Int) -> ChildViewController? {  
        // return nil here, if there won't be any page in pageviewcontroller
    
        // Create a new view controller and pass suitable data.
        let pageContentViewController: ChildViewController = storyboard?.instantiateViewController(withIdentifier: "ChildViewController") as! ChildViewController
    
        pageContentViewController.pageIndex = index
        return pageContentViewController
    }
    
    //Also add viewControllerAfter and viewControllerBefore methods
    
    func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
        self.pendingIndex = (pendingViewControllers.first as! ChildViewController).pageIndex
    }
    
    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
        if completed {
            self.currentIndex = self.pendingIndex!
            //Perform your task here
        }
    }
    

提交回复
热议问题