PageViewController 显示页面索引不正确?
Posted
技术标签:
【中文标题】PageViewController 显示页面索引不正确?【英文标题】:PageViewController showing the index of the page incorrectly? 【发布时间】:2016-06-14 05:28:16 【问题描述】:我已按照本教程创建 PageViewController http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ 问题是我错误地获取了页面,其余的一切都很完美
如果页面索引是最后一个索引,我需要做一些事情,然后我更改按钮标签。
- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index
if (([self.pageImages count] == 0) || (index >= [self.pageImages count]))
return nil;
// Create a new view controller and pass suitable data.
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];
pageContentViewController.imageFile = self.pageImages[index];
pageContentViewController.titleText = self.pageTitles[index];
pageContentViewController.pageIndex = index;
NSLog(@"INDEX : %lu", (unsigned long)index);
return pageContentViewController;
- (void)pageViewController:(UIPageViewController *)pageViewCntr didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
NSInteger currentIndex = ((UIViewController *)self.pageViewController.viewControllers.firstObject).view.tag;
if (completed) pageControl.currentPage = currentIndex;
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
NSInteger index = ((PageContentViewController *)viewController).pageIndex;
if (index == NSNotFound || !index) return nil;
NSLog(@"INDEX : %lu", (unsigned long)index);
return [self viewControllerAtIndex:index-1];
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
NSInteger index = ((PageContentViewController *)viewController).pageIndex;
if (index == NSNotFound || index == pageCount-1) return nil;
NSLog(@"INDEX : %lu", (unsigned long)index);
return [self viewControllerAtIndex:index+1];
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
return [self.pageImages count];
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
return 0;
我尝试了很多方法,但无法解决问题。
帮助我找到页面的当前索引。 页面索引当前未显示,当我滑动一次时,它一次返回 0,1 个索引,下一次滑动它显示我 2,下一次滑动它不返回任何索引
【问题讨论】:
最后一页打印什么pageContentViewController.pageIndex?你有多少页? @SanketBhavsar 从左到右和从右到左显示不同的索引,这是不正确的索引 你如何调用显示的方法?它返回/做什么?你期望它返回/做什么? 【参考方案1】:我已经实现了相同的代码,在调试之后,我知道PageViewControllerDataSource
方法被调用了两次。因此,您可以使用willTransitionToViewControllers
方法而不是viewControllerBeforeViewController
和viewControllerAfterViewController
方法来获取正确的索引。
请参考以下答案,
PageViewController delegate functions called twice
【讨论】:
你能再给我一些解释吗 如果转换未完成,willTransitionToViewControllers
仍会被调用,因此不应用于跟踪索引。以上是关于PageViewController 显示页面索引不正确?的主要内容,如果未能解决你的问题,请参考以下文章
滑动过快或连续左右滑动非常快时如何跟踪pageViewController的索引
如何让 PageViewController 显示不同的 ViewController
Pageviewcontroller 在 IOS 6 中不显示翻页动画