想自定义子视图控制器来实现分页导航,出了一点点问题咯,先附上代码
(1),.h文件中:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIPageViewControllerDataSource,UIPageViewControllerDelegate>
{
int pageIndex;
}
@property(nonatomic,strong) UIPageViewController *pageViewController;
@property(nonatomic,strong) UIViewController *page1;
@property(nonatomic,strong) UIViewController *page2;
@property(nonatomic,strong) UIViewController *page3;
@property(nonatomic,strong) UIViewController *page4;
@property(nonatomic,strong) UIViewController *page5;
@property(nonatomic,strong) UIViewController *page6;
@end
(2),.m文件中:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame=CGRectMake(0, 0, 320.0f, 420.0f);
self.pageViewController=[[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.delegate=self;
self.pageViewController.dataSource=self;
self.page1=[[UIViewController alloc] init];
UIImageView *iv1=[[UIImageView alloc] init];
iv1.image=[UIImage imageNamed:@"B4-中国.png"];
iv1.frame=self.view.frame;
[self.page1.view addSubview:iv1];
self.page2=[[UIViewController alloc] init];
UIImageView *iv2=[[UIImageView alloc]init];
iv2.image=[UIImage imageNamed:@"B3-韩国.png"];
iv2.frame=self.view.frame;
[self.page2.view addSubview:iv2];
self.page3=[[UIViewController alloc] init];
UIImageView *iv3=[[UIImageView alloc]init];
iv3.image=[UIImage imageNamed:@"B2-尼日利亚.png"];
iv3.frame=self.view.frame;
[self.page3.view addSubview:iv3];
self.page4=[[UIViewController alloc] init];
UIImageView *iv4=[[UIImageView alloc]init];
iv4.image=[UIImage imageNamed:@"A1-南非.png"];
iv4.frame=self.view.frame;
[self.page4.view addSubview:iv4];
self.page5=[[UIViewController alloc] init];
UIImageView *iv5=[[UIImageView alloc]init];
iv5.image=[UIImage imageNamed:@"A2-墨西哥.png"];
iv5.frame=self.view.frame;
[self.page5.view addSubview:iv5];
self.page6=[[UIViewController alloc] init];
UIImageView *iv6=[[UIImageView alloc]init];
iv6.image=[UIImage imageNamed:@"A3-乌拉圭.png"];
iv6.frame=self.view.frame;
[self.page6.view addSubview:iv6];
//都是自定义视图,因此不需要获取故事板,通过storyBoard ID找到子视图控制器等
//UIStoryboard *mainstoryboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
NSArray *viewControllers=@[self.page1];
//设定首页显示视图,显示视图与书脊有关
//setViewControllers:后只能添加一个数组
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
//将pageViewController添加到父视图控制器中去
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
pageIndex=0;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//返回当前视图控制器之前的视图控制器,用于上一页的显示
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
pageIndex--;
if(pageIndex<0){
pageIndex=0;
return nil;
}
//获取故事板
//UIStoryboard *mainStoryboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
//根据索引号,获取子视图控制器的ID,
NSString *pageID=[NSString stringWithFormat:@"page%i",pageIndex+1];
//根据ID,获取子视图控制器
//UIViewController *pvController=[mainStoryboard instantiateViewControllerWithIdentifier:pageID];
UIViewController *pvController=[[UIViewController alloc]initWithNibName:pageID bundle:nil];
return pvController;
备注:就是不知道在这一块,怎么根据名称,返回相应的子视图控制器;
}
//返回当前视图控制器之后的视图控制器,用于下一页的显示
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
pageIndex++;
if(pageIndex>2){
pageIndex=2;
return nil;
}
// Direction Forward=Forward After;
/* UIStoryboard *mainstoryboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
NSString *pageID=[NSString stringWithFormat:@"page%i",pageIndex+1];
UIViewController *pvController=[mainstoryboard instantiateViewControllerWithIdentifier:pageID];
return pvController;*/
//根据索引号,获取子视图控制器的ID,
NSString *pageID=[NSString stringWithFormat:@"page%i",pageIndex+1];
UIViewController *pvController
// UIViewController *pvController=[[UIViewController alloc]initWithNibName:pageID bundle:nil];
return pvController;
}
-(UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation{
//单页翻动:
self.pageViewController.doubleSided=NO;
//定义书脊位置在书的最左边,书将从右向左翻动
return UIPageViewControllerSpineLocationMin;
}
@end