如何检查 UIPageViewController VC 何时更改为另一个?
How to check when UIPageViewController VC changes to another?
我尝试通过滑动来检查我的 UIPageViewController 的 VC 何时更改为另一个。
什么函数处理这个,我如何获得新的页面索引?
我知道函数:
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
//code
}
非常感谢。
这段代码应该可以解决问题:
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
guard completed else { return }
guard let index = (pageViewController.viewControllers?.first as? ContentViewController)?.index else { return }
guard let index = pageViewController.viewControllers?.first?.view.tag else { return }
guard let vc = pageViewController.viewControllers?.first else { return }
let index: Int
switch vc {
case is FirstViewController:
index = 0
case is SecondViewController:
index = 1
default:
index = 2
}
}
您在这里所做的是手动保存当前选择的索引。只要过渡是动画的,这应该就可以工作,我猜它应该总是这样。
我尝试通过滑动来检查我的 UIPageViewController 的 VC 何时更改为另一个。 什么函数处理这个,我如何获得新的页面索引?
我知道函数:
func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {
//code
}
非常感谢。
这段代码应该可以解决问题:
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
guard completed else { return }
guard let index = (pageViewController.viewControllers?.first as? ContentViewController)?.index else { return }
guard let index = pageViewController.viewControllers?.first?.view.tag else { return }
guard let vc = pageViewController.viewControllers?.first else { return }
let index: Int
switch vc {
case is FirstViewController:
index = 0
case is SecondViewController:
index = 1
default:
index = 2
}
}
您在这里所做的是手动保存当前选择的索引。只要过渡是动画的,这应该就可以工作,我猜它应该总是这样。