PageViewController with Different xib (rather than different UIViewControllers)

288 views Asked by At

I am new to programming and am trying to make a PageViewController using xib's.

I have followed a tutorial found on SO which showed me how to make a PageViewController using different UIViewControllers in storyboard (I have pasted the code below). This works well, however, for my final app I would like to use a PageViewController in an xib (with multiple different xibs).

#import "IntroPages.h"

@implementation IntroPages
{
    NSArray *myViewControllers;
}

-(void)viewDidLoad
{
    [super viewDidLoad];

    self.delegate = self;
    self.dataSource = self;

    UIViewController *p1 = [self.storyboard instantiateViewControllerWithIdentifier:@"1ID"];
    UIViewController *p2 = [self.storyboard instantiateViewControllerWithIdentifier:@"2ID"];
    UIViewController *p3 = [self.storyboard instantiateViewControllerWithIdentifier:@"3ID"];
    UIViewController *p4 = [self.storyboard instantiateViewControllerWithIdentifier:@"4ID"];

    myViewControllers = @[p1,p2,p3,p4];

    [self setViewControllers:@[p1]
               direction:UIPageViewControllerNavigationDirectionForward
                animated:NO completion:nil];

}

-(UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
    return myViewControllers[index];
}

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
     viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];

    --currentIndex;
    currentIndex = currentIndex % (myViewControllers.count);
    return [myViewControllers objectAtIndex:currentIndex];
}

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];

    ++currentIndex;
    currentIndex = currentIndex % (myViewControllers.count);
    return [myViewControllers objectAtIndex:currentIndex];
}

-(NSInteger)presentationCountForPageViewController: (UIPageViewController *)pageViewController {
    return myViewControllers.count;
}

-(NSInteger)presentationIndexForPageViewController: (UIPageViewController *)pageViewController {
    return 0;
}
0

There are 0 answers