Reputation: 2169
I'm using the following code to initialize my UIPageViewController:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = ((PageContentViewController*) viewController).pageIndex;
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = ((PageContentViewController*) viewController).pageIndex;
if (index == NSNotFound) {
return nil;
}
index++;
if (index == [self.roosterWeken count]) {
return nil;
}
return [self viewControllerAtIndex:index];
}
- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index {
if (([self.roosterWeken count] == 0) || (index >= [self.roosterWeken count])) {
return nil;
}
// Create a new view controller and pass suitable data.
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];
pageContentViewController.rooster = [self.roosterWeken objectAtIndex:index];
pageContentViewController.pageIndex = index;
return pageContentViewController;
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
return [self.roosterWeken count];
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
return 0;
}
And in my async AFNetworking function I call the following on Complete
PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
Everything works fine but how can I make my UIPageViewController start for example on dot 3? (And be able to scroll left & right because we're not on the first dot).
EDIT
The solution is :
PageContentViewController *startingViewController = [self viewControllerAtIndex:2];
Upvotes: 3
Views: 1242
Reputation: 23078
To start on dot 3 set the presentation index to 2:
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
return 2;
}
and tell the pageViewController to present that viewController on init:
[self.pageViewController setViewControllers:[viewControllers[2]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
Upvotes: 4