gpt4 book ai didi

swift - UIPageController - 如果取消滑动则检测当前页面 (SWIFT 3.*)

转载 作者:可可西里 更新时间:2023-11-01 01:27:59 25 4
gpt4 key购买 nike

我目前有一个 UIPageController,它可以在滚动时正确检测到上一个或下一个 pageIndex

我需要解决的问题是...

例子:-用户向左或向右滚动,但随后决定在滑动期间取消……因此保留在当前页面上。

pageIndex 更改为待定页面(下一页)而不是实际的当前页面..

我的代码目前实现了上面的语句:--

func pageViewController(_ pageViewController: UIPageViewController, willTransitionTo pendingViewControllers: [UIViewController]) {

if let itemController = pendingViewControllers[0] as? PageContentViewController {

nextIndex = itemController.pageIndex

print("Page index = \(nextIndex)")
}
}

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
currentIndex = nextIndex
print("Current Page = \(currentIndex)")
}


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



let itemController = viewController as! PageContentViewController

if itemController.pageIndex < numberOfPages {
return getItemController(itemController.pageIndex+1)
}

return nil

}



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

let itemController = viewController as! PageContentViewController

if itemController.pageIndex > 0 {

return getItemController(itemController.pageIndex-1)
}

return nil
}

func getItemController(_ itemIndex: Int) -> PageContentViewController? {

if itemIndex < numberOfPages {
let pageItemController = self.storyboard!.instantiateViewController(withIdentifier: "Page1") as! PageContentViewController
pageItemController.pageIndex = itemIndex

return pageItemController
}

return nil
}

我想在页面显示之前获取页码,以便我可以显示特定对象等。

viewControllerAfter 和 viewControllerBefore 似乎不是每次都被调用因此我不能依赖这个委托(delegate)方法

最佳答案

我不知道我是怎么错过的,但在 didFinishAnimating 方法中,它们是一个完成 block

因此下面的代码解决了我的问题

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {

if completed
{
currentIndex = nextIndex

}

print("Current Page = \(currentIndex)")
}

关于swift - UIPageController - 如果取消滑动则检测当前页面 (SWIFT 3.*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com