UIPageViewController viewControllerAfterViewController在一次返回nil后没有被调用

Kli*_*akM 5 ios uipageviewcontroller ios7

我正在尝试UIPageViewController通过每一步的验证来实现.我的代码在没有验证的情况下工作正常,所以带页面的所有内容似乎都是正确的.这是我的代码:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    int index = [(MyViewController *) viewController index];
    index--;
    return [_viewModel viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    BOOL isDataValid = [(MyViewController *) viewController validateData];
    if (isDataValid) {
        int index = [(MyViewController *) viewController index];
        index++;
        return [_viewModel viewControllerAtIndex:index];
    }
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当显示步骤1时,viewControllerAfterViewController调用准备步骤2,但因为步骤2无法有效(用户没有机会输入数据)所以它返回nil.每次用户尝试滑动到下一个屏幕时我都会UIPageViewController打电话,viewControllerAfterViewController并且在收到零后不放弃.它可行吗?

Lou*_*nco 18

UIPageViewController有一个底层缓存.你可以用它重置它

pageViewController.dataSource = nil;
pageViewController.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

一旦您所在的页面生效,您就可以调用此方法.