UIPageViewController 的 UIPageControl 在滚动到下一个视图控制器时有时不会更新

Posted

技术标签:

【中文标题】UIPageViewController 的 UIPageControl 在滚动到下一个视图控制器时有时不会更新【英文标题】:UIPageControl of a UIPageViewController sometimes does not get updated when it is scrolled to next view controller 【发布时间】:2019-05-15 04:29:37 【问题描述】:

我用transitionStyle = .scroll 创建了UIPageViewController 的子类,并实现了负责显示UIPageControlUIPageViewControllerDataSource 方法,如下所示-

func presentationCount(for pageViewController: UIPageViewController) -> Int 
    return 3


func presentationIndex(for pageViewController: UIPageViewController) -> Int 
    return 0

页面视图控制器具有.custom 中的modalPresentationStyle,这样当视图控制器呈现时它不会占据全屏。

我观察到有时当我滚动页面视图控制器以显示下一个子视图控制器时,页面指示器没有更新。下面的 GIF 显示了问题

谁能指出如何解决这个问题?

【问题讨论】:

【参考方案1】:

请使用以下方法进行页面更改确认。

  func pageViewController(_ pageViewController: UIPageViewController, 
 didFinishAnimating finished: Bool, previousViewControllers: 
 [UIViewController], transitionCompleted completed: Bool) 

    pageControl.currentPage = arrViewController.index(of: pageContentViewController) ?? 0


【讨论】:

以上是关于UIPageViewController 的 UIPageControl 在滚动到下一个视图控制器时有时不会更新的主要内容,如果未能解决你的问题,请参考以下文章

Swift pagecontroller 故事板 UI 对象与 UIPageviewcontroller 连接

UIPageViewController -presentationCount 不触发

如何更改 UIPageViewController 中的按钮名称

iOS6 自动旋转 - UIPageViewController

如何在 UIPageViewController 中重用相同的 ViewController?

更改 UIPageViewController 中显示的初始视图控制器