#import "MainViewViewController.h"
#import "FirstPageViewController.h"
#import "AboutViewController.h"
static NSUInteger kNumberOfPages = 1;
@interface MainViewViewController (PrivateMethods)
-(void)loadScrollViewWithPage:(int)page;
-(void)scrollViewDidScroll:(UIScrollView *)sender;
@end
@implementation MainViewViewController
@synthesize pageControl, scrollView, viewControllers;
/*
-(void)addChildViewController:(UIViewController *)childController
{
FirstPageViewController *fpvc = [[FirstPageViewController alloc] initWithNibName:@"FirstPageViewController" bundle:nil];
[self addChildViewController:fpvc];
}
*/
-(IBAction)showInfo:(id)sender
{
AboutViewController *aboutView = [[AboutViewController alloc] init];
[aboutView setModalTransitionStyle:UIModalTransitionStylePartialCurl];
[self presentModalViewController:aboutView animated:YES];
}
-(IBAction)changePage:(id)sender
{
int page = pageControl.currentPage;
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page - 1];
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
[scrollView scrollRectToVisible:frame animated:YES];
pageControlUsed = YES;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}
-(void)scrollViewDidScroll:(UIScrollView *)sender
{
if(pageControlUsed)
{
return;
}
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];
}
-(void)loadScrollViewWithPage:(int)page
{
if(page < 0) return;
if(page >= kNumberOfPages) return;
FirstPageViewController *controller = [viewControllers objectAtIndex:page];
if((NSNull *)controller == [NSNull null]){
controller = [[FirstPageViewController alloc] initWithPageNumber:1];
//[viewControllers replaceObjectAtIndex:page withObject:controller];
[self addChildViewController:controller];
}
if(nil == controller.view.superview){
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
// FirstPageViewController *firstPageViewController = [[FirstPageViewController alloc] initWithNibName:@"FirstPageViewController" bundle:nil];
//[self addChildViewController:firstPageViewController];
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for(unsigned i = 0; i < kNumberOfPages; i++){
[controllers addObject:[NSNull null]];
}
self.viewControllers = controllers;
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;
pageControl.numberOfPages = kNumberOfPages;
pageControl.currentPage = 0;
[self loadScrollViewWithPage:0];
[self loadScrollViewWithPage:1];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end