首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPageViewController -presentationCount不开火

UIPageViewController -presentationCount不开火
EN

Stack Overflow用户
提问于 2017-12-12 05:52:10
回答 2查看 2K关注 0票数 2

问题:页面之间的UIPageViewController导航很好,但是:

1)导航点视图未显示

2)一些未调用的dataSource方法(可能导致1.)

我有下面的UI设置(基本上是UIPageViewController中的UITableViewCell)

UITableViewCell <- UIViewController <- ContainerView <- UIPageViewController

问题:

调用OK:

代码语言:javascript
复制
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?

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

未调用:

代码语言:javascript
复制
func presentationCount(for pageViewController: UIPageViewController) -> Int
func presentationIndex(for pageViewController: UIPageViewController) -> Int 

viewDidLoad之后完成的所有设置

代码语言:javascript
复制
dataSource = self
setViewControllers([viewController], direction: .reverse, animated: false, completion: nil)

注意:我正在应用程序的其他地方使用另一个UIPageViewController,直接在->内容视图上,所有委托方法都正常工作。另一个(可能是直接相关的)问题是导航点视图不可见。(在没有嵌入的情况下,也可以正常工作)。

有人经历过这样的事吗?为什么要调用一些dataSource委托方法,而另一些则不调用?

几个小时以来,我一直在查看这段代码以及我在google中所能找到的所有内容,但都没能继续下去。

UIPageViewController实现

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-12 06:16:09

如果实现了两个方法,转换样式为'UIPageViewControllerTransitionStyleScroll',导航方向为'UIPageViewControllerNavigationOrientationHorizontal'.,则页面指示符将是可见的。

两个方法都是响应于‘setViewControllers:.’而调用的。调用,但是在手势驱动的导航情况下,表示索引会自动更新.

根据文档,您需要实现这两种方法,并确保控制器的转换风格是“滚动”。然后页面指示符将是可见的,并调用函数。请查一下这个.

表示页面指示器的可见性。在视图加载中添加下面的代码

代码语言:javascript
复制
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
    }
 }
票数 9
EN

Stack Overflow用户

发布于 2017-12-12 11:51:46

根据Apple文档,您需要实现这两种方法,并确保控制器的转换风格是“滚动”。然后页面指示符将是可见的,并调用函数。请检查一下这个。

实际上,Vishal说过这一点,但并不十分清楚:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47766104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档