在 UIPageViewController 中跟踪页面索引的可靠方法 - Swift

2024-05-27

我在位于常规 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(使用前将#替换为@)

在 UIPageViewController 中跟踪页面索引的可靠方法 - Swift 的相关文章

随机推荐