To use UIPageViewController effectively you would need an UIPageViewControllerDataSource, this will help to display the before and after UIViewController. Here is an simple implementation to get you started:
#import <UIKit/UIKit.h> @interface PYPageViewController : UIPageViewController @property NSMutableArray *pages; @end
#import "PYPageViewController.h" @interface PYPageViewController() @end @implementation PYPageViewController @synthesize pages; - (void)viewWillAppear:(BOOL)animated { [self setDataSource:(id)self]; //Use this class as the data source self.pages = [[NSMutableArray alloc]initWithCapacity:3]; [self.pages addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"PYRootViewController"]]; [self.pages addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"PYNextViewController"]]; [self.pages addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"PYEndViewController"]]; [self setViewControllers:[NSArray arrayWithObject:pages[0]] direction:UIPageViewControllerNavigationDirectionForward animated:true completion:nil]; [super viewWillAppear:animated]; } /* UIPageViewControllerDataSource */ - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { UIViewController *view = nil; if ([self.pages objectAtIndex:0] != viewController){ for (NSUInteger i = [self.pages count]-1;i > 0 ; i--) { if ([self.pages objectAtIndex:i] == viewController){ view = [self.pages objectAtIndex:i-1]; break; } } } return view; } - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { UIViewController * view = nil; if ([self.pages objectAtIndex:[self.pages count]-1] != viewController){ for (NSUInteger i = 0;i < [self.pages count]-1; i++) { if ([self.pages objectAtIndex:i] == viewController){ view = [self.pages objectAtIndex:i+1]; break; } } } return view; } @end