I\'ve been working on a simple test app to learn the ins and outs of the UIPageViewController. I have it working but I\'m not convinced my execution is the best way. I hop
Basically, I managed to get a slightly different way which is based on the template provided by XCode 6.4 (Page-Based Application) methods and the insights from other authors (including this, @Ben from other answers):
- (void)viewDidLoad {
[super viewDidLoad];
self.viewControllersArray = @[@"FirstViewController", @"SecondViewController"];
...
}
...
- (UIViewController *)viewControllerAtIndex:(NSUInteger)index {
UIViewController *childViewController = [self.storyboard instantiateViewControllerWithIdentifier:[self.viewControllersArray objectAtIndex:index]];
//childViewController.index = index;
return childViewController;
}
- (NSUInteger)indexOfViewController:(UIViewController *)viewController {
NSString *restorationId = viewController.restorationIdentifier;
return [self.viewControllersArray indexOfObject:restorationId];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(UIViewController *)viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(UIViewController *)viewController];
if (index == NSNotFound) {
return nil;
}
index++;
if (index == [self.viewControllersArray count]) {
return nil;
}
return [self viewControllerAtIndex:index];
}