以编程方式翻页,指标不变

时间:2016-10-27 08:53:00

标签: ios swift swift3 uipageviewcontroller

我尝试了here

的以下方法
php

它有效,但有一个问题:

以编程方式转动页面时,指示器不会移动。它们似乎只有在用户转动时才会移动。带滑动的页面

执行程序化转换后指标的外观如何:

enter image description here

相反,它们保持不变

enter image description here

这导致问题是指标所显示的层次结构是[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)

   }
}

如果以编程方式打开页面,如何移动点指针?

3 个答案:

答案 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
}

就是这样!您的页面指示器现在应该可以工作了。 我和你一样陷入困境。