我在位于常规 UIViewController 中的容器内有一个 UIPageViewController (自定义)。我需要能够在每次页面更改时调用一个事件,但前提是它确实发生了变化,而不仅仅是一半或类似的事情。
using:
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
不可靠,并且由于某种原因不会每次都调用。
如果您的答案包含有关 willTransitionToViewControllers 或 didFinishAnimating 的任何内容,请详细说明,而不仅仅是提及它们,因为我已经知道它们存在,但不了解使用它们的正确方法。
谢谢
Use didFinishAnimating
它有一个completed
and finished
属性,以便您知道页面实际上已更改。从 pageViewController 你可以获取当前显示的页面,然后获取该 VC 在模型中的位置。
首先确保你的ViewController采用UIPageViewControllerDelegate
设置委托(例如在viewDidLoad
)
pageViewController.delegate = self
然后实现如下功能:
func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if (completed && finished) {
if let currentVC = pageViewController.viewControllers?.last {
let index = myViewControllers.indexOf(currentVC)
//do something with index
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)