0

I'm creating pageViewController inside createViewController() method. I have defined one property of UIPageViewController which is self.pageController. Because of repeating chunk of code, When these pages open then it also showing behind of view when we left scroll page.

func createPageController()
    {
        var deviceFrame:CGSize = UIScreen.mainScreen().bounds.size
        self.pageController = UIPageViewController(transitionStyle: UIPageViewControllerTransitionStyle.Scroll,
            navigationOrientation: UIPageViewControllerNavigationOrientation.Horizontal,
            options: [UIPageViewControllerOptionInterPageSpacingKey : 0])

            self.pageController!.view.frame = CGRectMake(0,108, deviceFrame.width, deviceFrame.height-110)
            self.dailyChallengeViewController = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("DailyChallengeViewController") as? DailyChallengeViewController
            self.winnersViewController = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("WinnersViewController") as? WinnersViewController

// All the below code will repeat 1 more time
 self.winnersViewController!.view.frame = self.pageController!.view.frame
        self.dailyChallengeViewController!.view.frame = self.pageController!.view.frame

        self.dailyChallengeViewController!.index = 0
        self.winnersViewController!.index = 1

        self.viewControllers = [self.dailyChallengeViewController!,self.winnersViewController!]
        self.pageController!.setViewControllers([self.dailyChallengeViewController!],
            direction:UIPageViewControllerNavigationDirection.Forward,
            animated:false,
            completion:nil)
        self.addChildViewController(self.pageController!)

        self.view.addSubview(self.pageController!.view)

        self.pageController!.dataSource = self
        self.pageController!.delegate = self

 self.pageController!.didMoveToParentViewController(self)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?{
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?{
}
Jakub Truhlář
  • 20,070
  • 9
  • 74
  • 84
Naveen
  • 1
  • 3

1 Answers1

2

As I did understand, many people have this issue.

It's because of the viewControllerBeforeViewController and viewControllerAfterViewController.

It is recommended to use the willTransitionToViewControllers to get the current index of your PVC alongside the other two methods stated above.

In other words, if you want a specific thing to happen at index x, write an if statement in the willTransitionToViewControllers delegate method.

Hope this helps you!

PageViewController delegate functions called twice

Community
  • 1
  • 1
Teodor Ciuraru
  • 3,417
  • 1
  • 32
  • 39