I took the Photo Scroller example from Apple\'s website and tried to implement my own Album by copying the code. Now, the UIScrollView
is not visible. How do I make
You are not adding the pageViewController
's view as a subview of BasePhotoViewController
's view. Your BasePhotoViewController
class should look something like this. Note the code in viewDidLoad
.
BasePhotoViewController.h:
@interface BasePhotoViewController : UIViewController
@property (nonatomic, strong) UIPageViewController * pageViewController;
@end
BasePhotoViewController.m:
#import "BasePhotoViewController.h"
#import "PhotoViewController.h"
@implementation BasePhotoViewController
@synthesize pageViewController;
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
PhotoViewController *pageZero = [PhotoViewController photoViewControllerForPageIndex:0];
if (pageZero != nil)
{
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:0
navigationOrientation:0
options:nil];
self.pageViewController.dataSource = self;
[self.pageViewController setViewControllers:@[pageZero]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:NULL];
}
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
}
# pragma mark - UIPageViewControllerDataSource
- (UIViewController *)pageViewController:(UIPageViewController *)pvc viewControllerBeforeViewController:(PhotoViewController *)vc
{
NSUInteger index = vc.pageIndex;
return [PhotoViewController photoViewControllerForPageIndex:(index - 1)];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pvc viewControllerAfterViewController:(PhotoViewController *)vc
{
NSUInteger index = vc.pageIndex;
return [PhotoViewController photoViewControllerForPageIndex:(index + 1)];
}
@end
Note: I've initialised the UIPageViewController
in initWithCoder:
because Apple's Photo Scroller code uses a storyboard. I removed the UIPageViewController
from the storyboard and created a BasePhotoViewController
in its place. If you are not loading BasePhotoViewController
from a storyboard, you should move the code in initWithCoder:
to the appropriate initialiser.
EDIT: See this sample project on github.