UIPageViewController以编程方式翻页不会更新页面指示器

时间:2013-02-16 01:19:18

标签: objective-c ios6 uipageviewcontroller ios6.1

当我使用类似于this answer的方法以编程方式在UIPageViewController中翻页时,页面指示器不会更新。滑动到下一页/上一页按预期更新页面指示符。在以编程方式翻页时,我需要做些什么才能更新页面指示器?即如何在以编程方式更改页面后设置当前“索引”,以便页面指示器知道哪个页面指示器显示为活动状态?

我在文档中注意到,声明如下:

  

如果实现了“支持页面指示符”中的两个方法,并且页面视图控制器的转换样式为UIPageViewControllerTransitionStyleScroll,则页面指示符可见。在调用setViewControllers:direction:animated:completion:方法之后调用这两个方法。 在手势驱动的导航之后,不会调用这些方法。索引会自动更新,并且视图控制器的数量应保持不变。

(见上文粗体字)

UIPageViewController documenatation

这是否意味着如果您不使用手势来翻页,那么就无法更新UIPageIndicators?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用正确的页面索引实现以下数据源协议方法:

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
 NSInteger currentPageIndex=0;
 //find out actual page index of the current view controller
return currentPageIndex;
}

答案 1 :(得分:0)

这意味着您将页数第一页设置为一次,并且无法在Page Control之前添加(或删除)页面再次致电setViewControllers:direction:animated:completion:

它基本上是DataSource协议中定义的只写属性。