我发现了一些关于如何UIPageViewController
跳转到特定页面的问题,但我注意到跳转的另一个问题,似乎没有一个答案承认。
无需深入了解我的 iOS 应用程序(类似于分页日历)的详细信息,这就是我所经历的。我声明一个UIPageViewController
,设置当前视图控制器,并实现一个数据源。
// end of the init method
pageViewController = [[UIPageViewController alloc]
initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
pageViewController.dataSource = self;
[self jumpToDay:0];
}
//...
- (void)jumpToDay:(NSInteger)day {
UIViewController *controller = [self dequeuePreviousDayViewControllerWithDaysBack:day];
[pageViewController setViewControllers:@[controller]
direction:UIPageViewControllerNavigationDirectionForward
animated:YES
completion:nil];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger days = ((THDayViewController *)viewController).daysAgo;
return [self dequeuePreviousDayViewControllerWithDaysBack:days + 1];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSInteger days = ((THDayViewController *)viewController).daysAgo;
return [self dequeuePreviousDayViewControllerWithDaysBack:days - 1];
}
- (UIViewController *)dequeuePreviousDayViewControllerWithDaysBack:(NSInteger)days {
return [[THPreviousDayViewController alloc] initWithDaysAgo:days];
}
编辑说明:我为出队方法添加了简化代码。即使使用这种亵渎神明的实现,我的页面顺序也有完全相同的问题。
初始化全部按预期工作。增量分页也可以正常工作。问题是,如果我jumpToDay
再次打电话,订单就会变得混乱。
如果用户在第 -5 天并跳转到第 1 天,向左滚动将再次显示第 -5 天而不是相应的第 0 天。这似乎与如何UIPageViewController
保持对附近页面的引用有关,但我可以'找不到任何对强制它刷新缓存的方法的引用。
有任何想法吗?