问题:页面之间的UIPageViewController
导航工作正常但是:
1)导航点视图未显示
2)未调用某些dataSource方法(可能导致1。)
我有以下用户界面设置(基本上UIPageViewController
中的UITableViewCell
)
UITableViewCell< - UIViewController< - ContainerView< - UIPageViewController
问题:
CALLED 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委托方法而其他方法不会调用?
我一直在看这个代码,我可以在谷歌找到几个小时,但无法前进。
答案 0 :(得分:3)
如果两种方法都已实现,则转换样式为' UIPageViewControllerTransitionStyleScroll'以及导航方向为' UIPageViewControllerNavigationOrientationHorizontal'
响应一个' setViewControllers调用这两个方法:...'呼叫,但在手势驱动导航的情况下,演示文稿索引会自动更新。
表示pageindicator的可见性。以下代码添加在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
}
}
答案 1 :(得分:2)
根据Apple文档,您需要实现和两种方法,确保控制器的过渡样式为"滚动"。然后页面指示器将可见并调用函数。请检查一下。
实际上Vishal说过这个,但不是很清楚:)