UIPageViewController -presentationCount 不触发
Posted
技术标签:
【中文标题】UIPageViewController -presentationCount 不触发【英文标题】:UIPageViewController -presentationCount not firing 【发布时间】:2018-05-25 18:05:38 【问题描述】:问题:UIPageViewController
页面之间的导航工作正常,但是:1) 导航点视图未显示
2) 一些 dataSource 方法没有被调用(可能是 1.)
我有以下 UI 设置(基本上是 UIPageViewController
in UITableViewCell
)
UITableViewCell
问题:
调用正常:
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 委托方法会被调用,而有些则不会?
我一直在查看此代码以及我可以在谷歌中找到的所有内容,但无法继续前进。
UIPageViewController Implementation
【问题讨论】:
【参考方案1】:如果实现了这两种方法,页面指示器将可见,过渡样式为“UIPageViewControllerTransitionStyleScroll”,导航方向为“UIPageViewControllerNavigationOrientationHorizontal”。
这两种方法都是为了响应“setViewControllers:...”调用而调用的,但在手势驱动导航的情况下,显示索引会自动更新。
根据 Apple 文档,您需要实现这两种方法并确保控制器的转换样式为“滚动”。然后页面指示器将可见并调用函数。请检查一下。
用于页面指示器的可见性。在 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
【讨论】:
我不知道你在说什么。你也没有引用'presentationCount'委托方法,这是我遇到的问题......而且看起来你只是随机粘贴了一些代码:) 我认为您在显示页面指示器时遇到了问题。 @PawelKlapuch + 用于配置 UIPageController 的页面控件颜色的绝妙方法。 :thumbup: :谢谢: orderedViewControllers 未定义。 用你的 UIViewcontroller 的数组 @Oscar 替换【参考方案2】:根据 Apple 文档,您需要实现两种方法和,确保控制器的转换样式为“滚动”。然后页面指示器将可见并调用函数。请检查这个。
其实Vishal是这么说的,但不是很清楚:)
【讨论】:
以上是关于UIPageViewController -presentationCount 不触发的主要内容,如果未能解决你的问题,请参考以下文章
UIPageViewController 和 UIScrollView
NavigationController 中的 UIPageViewController