当我使用类似于this answer的方法以编程方式在UIPageViewController中翻页时,页面指示器不会更新。滑动到下一页/上一页按预期更新页面指示符。在以编程方式翻页时,我需要做些什么才能更新页面指示器?即如何在以编程方式更改页面后设置当前“索引”,以便页面指示器知道哪个页面指示器显示为活动状态?
我在文档中注意到,声明如下:
如果实现了“支持页面指示符”中的两个方法,并且页面视图控制器的转换样式为UIPageViewControllerTransitionStyleScroll,则页面指示符可见。在调用setViewControllers:direction:animated:completion:方法之后调用这两个方法。 在手势驱动的导航之后,不会调用这些方法。索引会自动更新,并且视图控制器的数量应保持不变。
(见上文粗体字)
UIPageViewController documenatation
这是否意味着如果您不使用手势来翻页,那么就无法更新UIPageIndicators?
提前感谢您的帮助。
答案 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
协议中定义的只写属性。