手动设置新视图控制器后未调用UIPageViewControllerDatasource方法

时间:2014-10-15 08:25:06

标签: ios objective-c uipageviewcontroller

我使用UIPageViewController显示一系列UITableView个对象,每个对象代表特定日期的数据。您可以从一个日期水平滚动到下一个或上一个完美运行的日期。当用户从单独的菜单中选择日期时,会设置新的UITableViewController。问题是,现在再次调用左pageViewController:viewControllerBeforeViewController:滑动导致显示UITableView,其中包含在手动选择新日期之前显示的表视图的上一个日期。

示例:进入场景时,显示日期为2014/10/15。当显示2014/10/14时,当再次显示向前滚动2014/10/15时。到现在为止还挺好。现在选择并显示2014/10/21。向后滚动时,应显示2014/10/20,但会显示2014/10/14。有人也遇到过这个问题吗?我认为幕后有一些缓存技术。

- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerBeforeViewController: (RTNewsTVController *) viewController {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    return [[RTDishesTVController alloc] initWithDate: [viewController.selectedDate datePlusDays: -1]];
}

- (UIViewController *) pageViewController: (UIPageViewController *) pageViewController viewControllerAfterViewController: (RTNewsTVController *) viewController {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    return [[RTDishesTVController alloc] initWithDate: [viewController.selectedDate datePlusDays: 1]];
}

- (void) didSelectDate: (NSDate *) date {
    RTNewsTVController *currentController = [[RTNewsTVController alloc] initWithDate: date];
    [self setViewControllers: @[currentController] direction: UIPageViewControllerNavigationDirectionForward animated: YES completion: nil];
}

0 个答案:

没有答案