UIPageViewController -presentationCount 未触发
UIPageViewController -presentationCount not firing
问题:UIPageViewController
页面之间的导航工作正常但是:
1) 导航点视图未显示
2) 一些数据源方法未调用(可能是 1 的原因。)
我有以下 UI 设置(基本上是 UITableViewCell
中的 UIPageViewController
)
UITableViewCell <- UIViewController <- ContainerView <- UIPageViewController
问题:
通话正常:
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
-> 所有委托方法都工作正常。另一个(可能直接相关的)问题是导航点视图不可见。 (在未嵌入的情况下再次工作正常)。
有人遇到过这样的事情吗?
为什么有些数据源委托方法会被调用而有些不会被调用?
几个小时以来,我一直在查看此代码以及我在 google 中可以找到的所有内容,但无法继续。
如果两种方法都实现,页面指示器将可见,过渡样式为'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
}
}
根据 Apple 文档,您需要实现两种方法 和 ,确保控制器的过渡样式为 "scroll"。然后页面指示器将可见并调用函数。请检查这个。
其实Vishal是这么说的,但是不是很清楚:)
问题:UIPageViewController
页面之间的导航工作正常但是:
1) 导航点视图未显示
2) 一些数据源方法未调用(可能是 1 的原因。)
我有以下 UI 设置(基本上是 UITableViewCell
中的 UIPageViewController
)
UITableViewCell <- UIViewController <- ContainerView <- UIPageViewController
问题:
通话正常:
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
-> 所有委托方法都工作正常。另一个(可能直接相关的)问题是导航点视图不可见。 (在未嵌入的情况下再次工作正常)。
有人遇到过这样的事情吗? 为什么有些数据源委托方法会被调用而有些不会被调用?
几个小时以来,我一直在查看此代码以及我在 google 中可以找到的所有内容,但无法继续。
如果两种方法都实现,页面指示器将可见,过渡样式为'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
}
}
根据 Apple 文档,您需要实现两种方法 和 ,确保控制器的过渡样式为 "scroll"。然后页面指示器将可见并调用函数。请检查这个。
其实Vishal是这么说的,但是不是很清楚:)