Ios UIPageViewController按顺序显示页面,并且从不调用ViewControllerBeforReviewController

Ios UIPageViewController按顺序显示页面,并且从不调用ViewControllerBeforReviewController,ios,uipageviewcontroller,uipagecontrol,Ios,Uipageviewcontroller,Uipagecontrol,我有一个UIPageViewController,我在上实现了两个可选方法来获得自动UIPageControl 我有以下助手方法,可以在索引和视图控制器之间进行转换 - (UIViewController *)viewControllerForIndex:(NSInteger)index; - (NSInteger)indexFromViewController:(UIViewController *)viewController; 第一种方法创建一个新的视图控制器,将自身配置为特定索引,并将

我有一个UIPageViewController,我在上实现了两个可选方法来获得自动UIPageControl

我有以下助手方法,可以在索引和视图控制器之间进行转换

- (UIViewController *)viewControllerForIndex:(NSInteger)index;
- (NSInteger)indexFromViewController:(UIViewController *)viewController;
第一种方法创建一个新的视图控制器,将自身配置为特定索引,并将该索引存储在可检索的位置(即第二种方法访问的位置)

我使用以下代码实例化我的页面视图控制器:

[pageViewController setViewControllers:@[[self viewControllerForIndex:0]]
                             direction:UIPageViewControllerNavigationDirectionForward
                              animated:NO
                            completion:nil];
以下是我的数据源方法:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    NSInteger currentIndex = [self indexFromViewController:viewController];
    if (currentIndex == 0) {
        return nil;
    } else {
        return [self viewControllerForIndex:currentIndex-1];
    }
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    NSInteger currentIndex = [self indexFromViewController:viewController];
    if (currentIndex == self.data.count - 1) {
        return nil;
    } else {
        return [self viewControllerForIndex:currentIndex+1];
    }
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
    return self.data.count;
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
    return 0;
}
当我向前导航时,一切正常,当我向后导航时,视图控制器开始以随机顺序出现

我相信这与pageViewController:ViewControllerBeforReviewController:从未被调用有关。页面视图控制器仅调用pageViewController:viewControllerAfterViewController:,即使我开始向后滑动

UIPageViewController在情节提要中的配置如下:

  • 导航:水平
  • 过渡样式:滚动
  • 脊椎位置:无
  • 双面:没有
如何使页面视图控制器以正确的顺序显示视图控制器

更新:当我将代码复制到一个全新的项目中时,一切都很完美。我想我的新问题是,你知道可能导致这种行为的任何pod、框架、链接器标志和其他设置吗

如果我递归地在当前页面视图控制器的顶部呈现相同的页面视图控制器,那么错误会发生在视图控制器的每个奇数版本上。(也就是说,它发生在第一个、第三个等等。)

我运行的是1.2.34版,在升级到1.2.50版后,它修复了这个问题