UIPageViewController -presentationCount不触发

Paw*_*uch 0 datasource uitableview uipagecontrol ios uipageviewcontroller

问题:UIPageViewController页面之间的导航工作正常,但:
1)导航点视图未显示
2)未调用某些dataSource方法(可能是1引起的)

我有以下UI设置(基本上UIPageViewController在中UITableViewCell

UITableViewCell <-UIViewController <-ContainerView <-UIPageViewController

问题:

呼叫确定:

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
Run Code Online (Sandbox Code Playgroud)

未致电:

func presentationCount(for pageViewController: UIPageViewController) -> Int
func presentationIndex(for pageViewController: UIPageViewController) -> Int 
Run Code Online (Sandbox Code Playgroud)

所有设置都在viewDidLoad之后完成:

dataSource = self
setViewControllers([viewController], direction: .reverse, animated: false, completion: nil)
Run Code Online (Sandbox Code Playgroud)

注意:我正在UIPageViewController内容视图中直接在应用程序的其他位置使用其他位置->那里的所有委托方法都工作正常。另一个(可能直接相关)的问题是导航点视图不可见。(如果未嵌入,再次可以正常工作)。

有人遇到过这样的事情吗?为什么某些dataSource委托方法被调用而另一些则不被调用?

我一直在看这段代码,我已经在Google上找到了好几个小时,但无法继续前进。

UIPageViewController实现

小智 5

如果同时实现了这两种方法,过渡样式为“ UIPageViewControllerTransitionStyleScroll”和导航方向为“ UIPageViewControllerNavigationOrientationHorizo​​ntal”,则页面指示器将可见。

两种方法均响应“ setViewControllers:...”调用而被调用,但是在手势驱动导航的情况下,表示索引会自动更新。

用于页面指示符的可见性。下面的代码添加到viewdidload中

var pageControl = UIPageControl.appearance()
pageControl.pageIndicatorTintColor = UIColor.lightGray
pageControl.currentPageIndicatorTintColor = UIColor.white
pageControl.backgroundColor = UIColor.black

func presentationCount(for pageViewController: UIPageViewController) -> Int {
    return orderedViewControllers.count
}

func presentationIndex(for pageViewController: UIPageViewController) -> Int {
    if let currentVC = self.viewControllers!.first {
        let currentIndex = orderedViewControllers.index(of: currentVC)
        return currentIndex!
    }else{
        return 0
    }
 }
Run Code Online (Sandbox Code Playgroud)