我尝试了here
的以下方法php
它有效,但有一个问题:
以编程方式转动页面时,指示器不会移动。它们似乎只有在用户转动时才会移动。带滑动的页面
执行程序化转换后指标的外观如何:
相反,它们保持不变
这导致问题是指标所显示的层次结构是[2,0,1]而不是[0,1,2]
这是我实施指标的方式:
extension UIPageViewController {
func goToNextPage(){
guard let currentViewController = self.viewControllers?.first else { return }
guard let nextViewController = dataSource?.pageViewController( self, viewControllerAfter: currentViewController ) else { return }
setViewControllers([nextViewController], direction: .forward, animated: true, completion: nil)
}
}
如果以编程方式打开页面,如何移动点指针?
答案 0 :(得分:1)
遗憾的是,您无法更新UIPageViewController中嵌入的UIPageControl。但是,您可以在UIPageViewController中拥有自己的UIPageControl以获得完全控制。然后,您可以在更新页面时以编程方式更新UIPageControl属性。看看这个article.
答案 1 :(得分:0)
有一种解决方法,获取UIPageViewController的子视图,将值设置为currentPage。
for subView in self.view.subviews{
if let pageControl = subView as? UIPageControl,
pageControl.numberOfPages > currentIndex{
pageControl.currentPage = currentIndex
}
}
答案 2 :(得分:0)
您可以做的,就是将页面索引保留在一个变量中,我们将其称为currentPageIndex并使用以下方法:
// Part of UIPageViewControllerDelegate
func presentationIndex(for pageViewController: UIPageViewController) -> Int {
return currentPageIndex;
}
// In your Button action, set this variable
@IBAction func nextPage(_ sender: Any) {
var index = (pageViewController?.viewControllers?.last as! SinglePageViewController).pageIndex
currentPageIndex = index
}
就是这样!您的页面指示器现在应该可以工作了。 我和你一样陷入困境。