UIPageViewController与不同的ViewControllers,正确的方法?

lbp*_*an1 4 objective-c ios uipageviewcontroller

基本上,我有一个表视图控制器和一个普通的视图控制器,我想这样做,以便我可以在视图控制器之间滑动,如在应用程序的主屏幕上(明显相同类型的视图控制器).

但我发现的是,UIpageviewcontroller当您有多个相同类型的视图时viewcontroller,例如在图片之间滑动,可以使用它,您可以在类中设置一个索引,并设置与索引相关的图像数组并进行设置那样.

但我正试图在这个设置中获得不同的视图控制器.现在它是两个但肯定会达到4左右.

UIPageViewController正确的设置方式还是其他方式.

编辑:下面添加的代码

    //
//  ViewController.m
//  testb
//
#import "MainPostController.h"
#import "MainTableViewController.h"
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize pageViewController;
@synthesize indexValue = _indexValue;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.indexValue= 1;
    NSLog(@"main intitated");

    // Do any additional setup after loading the view, typically from a nib.
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
    self.pageViewController.dataSource = self;

    MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
    MainPostController *pvc;
    NSArray *viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];

    [self.pageViewController setViewControllers:viewcontrollers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);

    [self addChildViewController:pageViewController];
    [self.view addSubview:pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}




-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if (self.indexValue == 1) {
        MainPostController *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPostController"];
        self.indexValue = 0 ;
        return  pvc;

    }
    else return nil;




}

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{

    if (self.indexValue == 0) {
        MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
        self.indexValue = 1;
        return tvc;

    }
    else return nil;


}
@end
Run Code Online (Sandbox Code Playgroud)

我希望初始视图是表视图控制器(tvc),我希望Post视图控制器(pvc)在其左侧.我可以加载它并轻松地在两者之间滑动但有时我可以比边界滑动更多,所以基本上如果我开始在tvc - > pvc - > tvc然后我可以进一步通过向右滑动到同一个tvc然后到达边界或走另一条路tvc - > pvc - > tvc - > pvc - > pvc通过向左滑动进行最后一次转换.最终达到了界限.一旦应用程序在tvc初始启动我无法前进一个页面,(这应该发生什么)如果我去tvc - > pvc并尝试去左边的页面它不会让我(这是应该发生的事情) )

谢谢

lbp*_*an1 8

最后完成它,没有必要为不同的类添加任何属性.刚试过课.下面是代码:

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if ([viewController isKindOfClass:[MainTableViewController class]]) {
        MainPostController *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPostController"];
        return  pvc;

    }

    else return nil;

}


-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{

    if ([viewController isKindOfClass:[MainPostController class]]) {
        MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
        return tvc;

    }
    else return nil;
}
Run Code Online (Sandbox Code Playgroud)

应该很容易添加更多视图控制器,因为我只需要添加if语句来测试它们.解决方法的主要问题是方法isKindOfClass:

谢谢你的回复!