PageViewController发疯了

时间:2017-04-05 06:58:19

标签: ios objective-c uiviewcontroller uipageviewcontroller

我想在viewControllers之间使用PageViewController进行分页 在我按照教程

之后

(它是为了使用相同的 viewController与不同的内容),但我在四个不同 ViewControllers之间进行分页

问题是有时我导航到某个页面然后它会消失或两次翻页到同一页面 我发现类似的问题没有答案:(

这是我的代码

@implementation MainViewController {
    UIPageViewController *pageViewController;
    int pageIndex;
    NSMutableArray* viewControllers;
}
- (void)viewDidLoad {
    [super viewDidLoad];

    viewControllers = [NSMutableArray new];
    [viewControllers addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"1"]];
    [viewControllers addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"2"]];
    [viewControllers addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"3"]];
    [viewControllers addObject:[self.storyboard instantiateViewControllerWithIdentifier:@"profileVC"] ];

    pageIndex = 3; // starting with the last one

    pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
    [pageViewController setDataSource:self];
    pageViewController.delegate = self;
    UIViewController *startVC = viewControllers[3];
    [pageViewController setViewControllers:@[startVC] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];

    pageViewController.view.frame = CGRectMake(0, 120, self.view.frame.size.width, self.view.frame.size.height );
    [self addChildViewController:pageViewController];
    [self.view addSubview:pageViewController.view];
    [pageViewController didMoveToParentViewController:self];


}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
    if (pageIndex == 0 || pageIndex == NSNotFound) {

        return nil;
    }
    return viewControllers[--pageIndex];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
    if (pageIndex == [viewControllers count] - 1 ) {
        return nil;
    }
    return viewControllers[++pageIndex];
}

0 个答案:

没有答案