UIPageViewController in iOS Tutorial
UIPageViewController in iOS Tutorial
UIPageViewController in iOS
iOS
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 1/18
2/24/2016 UIPageViewController in iOS Tutorial
Jump To:
Objective
Introduction:
Step 1 Create Xcode Project for
UIPageViewController
Create a new xcode project for UIPageViewController example under the iOS
Application and create single view application. Here we can see that page based
application is also available for navigating through pages, but in this post I am
concentrating upon navigation between different pages or screens using
UIPageViewController, which is easier than page based application.
Here, I am giving the iOS Page View Controller product name as PageViewDemo.
And the and organization name as com.TheAppGuruz . You can enter the product
name and organization name as per your preference. Press next and store the
Pagve View Controller Tutorial project according to your preference.
Press create, and the project for Xcode Page View Controller in iOS is created.
You can get more detail about creating XCode project from following link:
Step 2 Design UI
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 3/18
2/24/2016 UIPageViewController in iOS Tutorial
Step 3 Add ViewControllers
In this iOS PageViewController tutorial, the original view controller is used as the
root view controller for holding the page view controller. The view controller
we've just added will be used for displaying the page content. Throughout the
post, we will refer the original view controller as the root view controller and the
other view controller as page content controller. For that delete the default
viewcontroller.h and viewcontroller.m files and create new class under the
UIViewController Class and name it as RootViewController.
In the 3rd inspector of default view controller in the class section select
RootViewController, hence the default view controller inherits from the
RootViewController class. Similarly for the page content view controller create a
new class under the UIViewController and name it as
PageContentViewController. And in the 3rd inspector of new view controller
select the class as PageContentViewController which means the new view
controller inherits from PageContentViewController.
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 4/18
2/24/2016 UIPageViewController in iOS Tutorial
Now the two view controllers titles will appear as shown below:
Step 4 Set storBoard ID
By default, the transition style of the page view controller is set as Page Curl. The
page curl style is perfect for book apps. For navigating between screens, we will
use scrolling style. So change the transition style to Scroll under Attribute
Inspector.
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 5/18
2/24/2016 UIPageViewController in iOS Tutorial
Contact Us
S earch
CATEGORIES
3DS
Build iOS Outlet and Action via Drag and Drop Method
Step 5 Design UI
Google Maps Mobile SDK Using Swift
UIPageViewController in iOS
Now we will create the user interface for the PageContentViewController for that
drag ImageView and
Create Label on to
UITableView the PageContentViewController’s
Control in iOS view put the
label on to the ImageView in the upper portion. The ImageView will contain
different images
iOS -for different to
Introduction screens
Gestureand the label
Recognizer will have some text about the
in iOS
image. Change the label text color to pink color.
iOS - AirDrop File Sharing
The PageContentViewController will look as shown below:
Stripe Integration - iOS (Payments through Card)
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 6/18
2/24/2016 UIPageViewController in iOS Tutorial
For the root view controller, add a "Start Again" button and put it at the below of
the screen.
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 7/18
2/24/2016 UIPageViewController in iOS Tutorial
Next we create NString for holding the current images file and current image text
for that we add the following line of code in PageViewController.h file. Also we will
have NSUInteger for keeping page index.
- (void)viewDidLoad
{
[super viewDidLoad];
self.ivScreenImage.image = [UIImage imageNamed:self.i
mgFile];
self.lblScreenLabel.text = self.txtTitle;
}
In this case, we use the RootViewController class as the data source for the
UIPageViewController instance. Therefore it is necessary to declare the
RootViewController class as implementing the UIPageViewControllerDataSource
protocol.
The RootViewController class is also responsible to provide the data of the page
content (i.e. images and titles). Open the RootViewController.h .
- (PageContentViewController *)viewControllerAtIndex:
(NSUInteger)index;
- (IBAction)btnStartAgain:(id)sender;
@end
In the RootViewController.m file initialize the arrays for pageimages and pagetitles
in ViewDidLoad Method:
[super viewDidLoad];
arrPageTitles = @[@"This is The App Guruz",@"This is
Table Tennis 3D",@"This is Hide Secrets"];
arrPageImages =@[@"1.jpg",@"2.jpg",@"3.jpg"];
Step 8 Delegate & Datasource method
Next we will add the two required methods for the UIPageViewDatasource in the
as follows:
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 9/18
2/24/2016 UIPageViewController in iOS Tutorial
RootViewController as follows:
- (UIViewController *)pageViewController:(UIPageViewC
ontroller *)pageViewController viewControllerBeforeVi
ewController:(UIViewController *)viewController
{
NSUInteger index = ((PageContentViewController*) view
Controller).pageIndex;
if ((index == 0) || (index == NSNotFound))
{
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewC
ontroller *)pageViewController viewControllerAfterVie
wController:(UIViewController *)viewController
{
NSUInteger index = ((PageContentViewController*) view
Controller).pageIndex;
if (index == NSNotFound)
{
return nil;
}
index++;
if (index == [self.arrPageTitles count])
{
return nil;
}
return [self viewControllerAtIndex:index];
}
Here you can see that we have created a helper method i.e.
viewControllerAtIndex:index .
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 10/18
2/24/2016 UIPageViewController in iOS Tutorial
- (PageContentViewController *)viewControllerAtIndex:
(NSUInteger)index
{
if (([self.arrPageTitles count] == 0) || (index >= [s
elf.arrPageTitles count])) {
return nil;
}
// Create a new view controller and pass suitable dat
a.
PageContentViewController *pageContentViewController
= [self.storyboard instantiateViewControllerWithIdent
ifier:@"PageContentViewController"];
pageContentViewController.imgFile = self.arrPageImage
s[index];
pageContentViewController.txtTitle = self.arrPageTitl
es[index];
pageContentViewController.pageIndex = index;
return pageContentViewController;
}
To display a page indicator, you have to tell iOS the number of pages (i.e. dots)
to display in the page view controller and which page must be selected at the
beginning. Add the following two methods at the end of the RootViewController.m
file.
-(NSInteger)presentationCountForPageViewController:(U
IPageViewController *)pageViewController
{
return [self.arrPageTitles count];
}
- (NSInteger)presentationIndexForPageViewController:(
UIPageViewController *)pageViewController
{
return 0;
}
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 11/18
2/24/2016 UIPageViewController in iOS Tutorial
In this final step we will create and initiate the UIPageViewController and for that
we will make use of the Storyboard ID of the PageViewController. Remember we
discussed that we will use the Storyboard ID further in our code. Hence change
the ViewDidLoad method to:
- (void)viewDidLoad
{
[super viewDidLoad];
arrPageTitles = @[@"This is The App Guruz",@"This is
Table Tennis 3D",@"This is Hide Secrets"];
arrPageImages =@[@"1.jpg",@"2.jpg",@"3.jpg"];
// Create page view controller
self.PageViewController = [self.storyboard instantiat
eViewControllerWithIdentifier:@"PageViewController"];
self.PageViewController.dataSource = self;
PageContentViewController *startingViewController = [
self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.PageViewController setViewControllers:viewContr
ollers direction:UIPageViewControllerNavigationDirect
ionForward animated:NO completion:nil];
// Change the size of page view controller
self.PageViewController.view.frame = CGRectMake(0, 0,
self.view.frame.size.width, self.view.frame.size.hei
ght - 30);
[self addChildViewController:PageViewController];
[self.view addSubview:PageViewController.view];
[self.PageViewController didMoveToParentViewControlle
r:self];
}
Step 10 Set PageViewController in AppDelegate
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 12/18
2/24/2016 UIPageViewController in iOS Tutorial
In this step we customize the look of the PageView i.e. we will change the color
of the dots in the PageView. For that add the following lines of code in the
AppDelegate.m file in didFinishLaunchingWithOptions method:
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 13/18
2/24/2016 UIPageViewController in iOS Tutorial
I hope you will find this blog post very useful. While working with
UIPageViewController in IOS. Let me know in comment if you have any
questions regarding UIPageViewController in IOS. I will reply you ASAP.
Got an Idea of iPhone App Development? What are you still waiting for? Contact
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 14/18
2/24/2016 UIPageViewController in iOS Tutorial
us now and see the Idea live soon. Our company has been named as one of the
best iPhone App Development Company in India.
Drashti Lakhani
PREVIOUS POST
Create Classic Snake Game in Unity 2D
NEXT POST
How To Animate Specific Body Parts Using Avatar Mask
I have created delegate method and pass the index to viewcontroller but
page view controller not moving properly.
PageContentViewController.m file
- (IBAction)nextAction:(id)sender {
int temp=self.pageIndex+1;
[self.delegate scrollKeyboard:self.pageIndex];
see more
△ ▽ • Reply • Share ›
2. RootViewController.h file
-> Put below code:
3. RootViewController.m file
-> In viewDidLoad() method, put below line:
intCurrentIndex = 0;
see more
△ ▽ • Reply • Share ›
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 16/18
2/24/2016 UIPageViewController in iOS Tutorial
Start a
Project
Like what you see? We'd
love to hear from you!
GET IN TOUCH
Game Development
3D Game Development
IOS Game Development
Android Game Development
Game Development
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 17/18
2/24/2016 UIPageViewController in iOS Tutorial
App Development
Tools
Android - JSON
Android XML Layout Generator
CSS Animation
Company
About us
Career
Client Testimonials
Our Team
Contact Us
http://www.theappguruz.com/blog/uipageviewcontroller-in-ios 18/18