0

I have used a UIPageViewController having 5 view controller for scrolling. Now in my case I just want user to go forward only not backward. Means if I'm on 1st view controller and I swiped on screen, I'll be navigated to 2nd view controller. Now I can't go back to 1st view controller.

Attaching the code here.

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    return nil;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    if ([viewController isKindOfClass:[MyViewController1 class]]) {
        return [self viewControllerAtIndex:1];
    } else if ([viewController isKindOfClass:[MyViewController2 class]]) {
        return [self viewControllerAtIndex:2];
    } else if ([viewController isKindOfClass:[MyViewController3 class]]) {
        return [self viewControllerAtIndex:3];
    } else if ([viewController isKindOfClass:[MyViewController4 class]]) {
        return [self viewControllerAtIndex:4];
    } else {
        return nil;
    }
}

Any Idea???

rmaddy
  • 314,917
  • 42
  • 532
  • 579
Rohitax Rajguru
  • 893
  • 2
  • 13
  • 35
  • http://stackoverflow.com/questions/14426728/uipageviewcontroller-direction-only-forward – Adnan Aftab Aug 15 '15 at 21:36
  • no success. Any other idea or link? – Rohitax Rajguru Aug 15 '15 at 21:51
  • Remove previous view controller inside this method if complete == YES - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed – Adnan Aftab Aug 15 '15 at 21:53

1 Answers1

0

You can do a work around for this, in side didFinishAnimating delegate method set currentViewController without animation

    - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
    {
    if (completed){
         __weak typeof(self) weakSelf = self;
          dispatch_async(dispatch_get_main_queue(), ^{
          [weakSelf.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
         });
       }
    }

For more detail on this issue visit here

Community
  • 1
  • 1
Adnan Aftab
  • 14,377
  • 4
  • 45
  • 54