我发现了一些关于如何跳转到特定页面的问题,但我注意到跳转的另一个问题,似乎没有一个答案承认.
不必详细介绍我的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
如何保存对附近页面的引用有关,但我找不到任何对方法的引用,这些引用会迫使它刷新缓存.
有什么 idea 吗?