问题:页面之间的UIPageViewController导航很好,但是:
1)导航点视图未显示
2)一些未调用的dataSource方法(可能导致1.)
我有下面的UI设置(基本上是UIPageViewController中的UITableViewCell)
UITableViewCell <- UIViewController <- ContainerView <- UIPageViewController
问题:
调用OK:
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?未调用:
func presentationCount(for pageViewController: UIPageViewController) -> Int
func presentationIndex(for pageViewController: UIPageViewController) -> Int 在viewDidLoad之后完成的所有设置
dataSource = self
setViewControllers([viewController], direction: .reverse, animated: false, completion: nil)注意:我正在应用程序的其他地方使用另一个UIPageViewController,直接在->内容视图上,所有委托方法都正常工作。另一个(可能是直接相关的)问题是导航点视图不可见。(在没有嵌入的情况下,也可以正常工作)。
有人经历过这样的事吗?为什么要调用一些dataSource委托方法,而另一些则不调用?
几个小时以来,我一直在查看这段代码以及我在google中所能找到的所有内容,但都没能继续下去。
UIPageViewController实现
发布于 2017-12-12 06:16:09
如果实现了两个方法,转换样式为'UIPageViewControllerTransitionStyleScroll',导航方向为'UIPageViewControllerNavigationOrientationHorizontal'.,则页面指示符将是可见的。
两个方法都是响应于‘setViewControllers:.’而调用的。调用,但是在手势驱动的导航情况下,表示索引会自动更新.。
根据文档,您需要实现这两种方法,并确保控制器的转换风格是“滚动”。然后页面指示符将是可见的,并调用函数。请查一下这个.
表示页面指示器的可见性。在视图加载中添加下面的代码
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
}
}发布于 2017-12-12 11:51:46
根据Apple文档,您需要实现这两种方法,并确保控制器的转换风格是“滚动”。然后页面指示符将是可见的,并调用函数。请检查一下这个。
实际上,Vishal说过这一点,但并不十分清楚:)
https://stackoverflow.com/questions/47766104
复制相似问题