问题是它在你翻了3或4页后开始更新当前页码,然后开始更新从1,2,3,4 ......开始的当前页码,这是错误的。如果你以相反的顺序开始翻页,我们假设它从12开始显示13然后从下一页开始以相反的顺序更新当前页面编号。
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{
if (!completed) {
return;
}
if (currentIndex<totalPages -1 ){
[self displaycurrentIndex:currentIndex + 1];
}else if (currentIndex>totalPages + 1){
[self displaycurrentIndex:currentIndex - 1];
}
}
- (void) displaycurrentIndex:(NSUInteger)currentIndex {
self.navigationItem.title = [NSString stringWithFormat:
@"Page %i of %i",
currentIndex + 1,
CGPDFDocumentGetNumberOfPages(PDFDocument)];
}
请帮助我们从一开始就按照相反的顺序修正此更新当前页码。
编辑:
删除后
if (!completed) {
return;
}
现在它是在翻页后翻页但是现在更新当前页码从0到20然后再从1到20等等但仍然在以相反的顺序翻页时它仍然在正向更新当前页面编号然后在反向顺序。
感谢您的帮助。
答案 0 :(得分:0)
根据我的经验(并且在过去的WWDC会话中确认了专用于此课程的视频),在UIPageViewController中管理页码的最佳方法是将页码信息直接存储在页面视图控制器中(即在包含您要显示的单个页面的视图控制器中)。
然后,如果要显示带有页码的通用状态栏,只需获取UIPageViewController的viewControllers属性,该属性根据UIPageViewController设置返回一个或两个视图控制器。
因此在伪代码中,当页面视图控制器询问其数据源时,新的视图控制器将显示您的代码: - 将获得当前的视图控制器 - 将从它(他们)获取页码 - 将计算下一个或上一页的页码(取决于页面卷曲/滑动方向) - 将向数据源询问新计算的页码视图控制器,并将为其页码属性分配新值
通过这种方式,您可以避免出现奇怪的动画行为,并且您不需要在内存中保留可能导致问题的全局“currentIndex”,如您所见。