Reputation: 1113
I wasn't able to find a working example of a PageViewController with View Controllers as pages.
I just need two horizontal view controllers: viewcontroller1 and viewcontroller2.
Here is my viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationVertical options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];
storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil];
controller1 = [storyboard instantiateViewControllerWithIdentifier:@"first"];
controller2 = [storyboard instantiateViewControllerWithIdentifier:@"second"];
viewControllers = [NSArray arrayWithObjects:controller1, nil];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
return controller1;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
return controller2;
}
The problem is, after swiping the second view, it disappears. Some help understanding the PageViewController would be really nice.
Thanks in advance
Upvotes: 1
Views: 1232
Reputation: 104082
Change you delegate methods like this, and it should work properly:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
if (self.pageController.viewControllers[0] == self.controller2)
return self.controller1;
return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
if (self.pageController.viewControllers[0] == self.controller1)
return self.controller2;
return nil;
}
Upvotes: 5