首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何知道UIPageViewController是向前翻转还是向后翻转?

我如何知道UIPageViewController是向前翻转还是向后翻转?
EN

Stack Overflow用户
提问于 2012-01-06 07:49:59
回答 5查看 22.4K关注 0票数 18

我有一个UIPageViewController,我只是不知道如何知道用户将页面翻到了什么方向,这样我才能适当地设置页面计数。

谢谢沙尼

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-06 09:00:34

当用户翻页时,将调用UIPageViewController的setViewControllers:方法。此方法接收UIPageViewControllerNavigationDirection类型的参数,该参数将为您提供所需的信息。

票数 0
EN

Stack Overflow用户

发布于 2012-01-16 01:01:48

在手势驱动的转换完成后,此委托method被调用:

代码语言:javascript
复制
pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:

因此,通过比较previousViewControllers参数和pageViewController.viewControllers,您可以知道方向。

票数 7
EN

Stack Overflow用户

发布于 2012-01-09 19:10:26

“基于页面的应用程序”模板提供了以下两种方法:

代码语言:javascript
复制
- (NSUInteger)indexOfViewController:(DataViewController *)viewController; 

一种用于查找给定视图控制器的索引的方法

代码语言:javascript
复制
- (DataViewController *)viewControllerAtIndex:(NSUInteger)index

一种在给定索引的情况下实例化视图控制器的方法。

为了制作正确的动画,您需要知道当前视图控制器的索引。基于页面的模板方法非常适合这一点。然后,您只需比较您的“跳转到”索引和您的“当前”索引。

这里有一些代码来理解这个想法:

代码语言:javascript
复制
- (void)jumpToPage:(NSInteger)page {    
   // find current index
   DataViewController *currentViewController = (DataViewController *)[self.pageViewController.viewControllers lastObject];
   NSUInteger index = [self indexOfViewController:currentViewController];

   // choosing the correct direction
   // if the 'current' is smaller than the 'jump to' page, then choose forward
   // vice versa
   UIPageViewControllerNavigationDirection direction;
   if (index < page) {
       direction = UIPageViewControllerNavigationDirectionForward;
   } else {
       direction = UIPageViewControllerNavigationDirectionReverse;
   }

   // choose view controllers according to the orientation
   NSArray *viewControllers;
   if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
       DataViewController *rightViewController = [self viewControllerAtIndex:page];
       viewControllers = [NSArray arrayWithObject:rightViewController];
   } else {
       DataViewController *rightViewController = [self viewControllerAtIndex:page];
       DataViewController *leftViewController = [self viewControllerAtIndex:page-1];
       viewControllers = [NSArray arrayWithObjects:leftViewController, rightViewController, nil];
   }

   // fire the method which actually trigger the animation
   [self.pageViewController setViewControllers:viewControllers 
                                     direction:direction 
                                      animated:YES 
                                    completion:nil];
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8751633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档