ios – 如何在Swift中实现UIPageViewController委托的transitionCompleted?

ios – 如何在Swift中实现UIPageViewController委托的transitionCompleted?,第1张

概述如您所见,有两个UIViewControllers(其中一个称为ProView,充当其他UIViewController的容器和一个UIPageViewController. import UIKitclass ProView: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {v @H_301_6@ 如您所见,有两个UIVIEwControllers(其中一个称为ProVIEw,充当其他UIVIEwController的容器和一个UIPageVIEwController.

import UIKitclass ProVIEw: UIVIEwController,UIPageVIEwControllerDataSource,UIPageVIEwControllerDelegate {var pageVIEwController: UIPageVIEwController?let characterImages = ["character1","character2"]overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    createPageVIEwController()    setupPageControl()}overrIDe func dIDReceiveMemoryWarning() {    super.dIDReceiveMemoryWarning()}func pageVIEwController(pageVIEwController: UIPageVIEwController,vIEwControllerAfterVIEwController ProVIEw: UIVIEwController) -> UIVIEwController? {        let itemController = ProVIEw as PageItemController        if itemController.itemIndex+1 < characterImages.count {            return getItemController(itemController.itemIndex+1)        }        return nil}func pageVIEwController(pageVIEwController: UIPageVIEwController,vIEwControllerBeforeVIEwController ProVIEw: UIVIEwController) -> UIVIEwController? {    let itemController = ProVIEw as PageItemController        if itemController.itemIndex > 0 {            return getItemController(itemController.itemIndex-1)        }        return nil}private func getItemController(itemIndex: Int) -> PageItemController? {    if itemIndex < characterImages.count {        let pageItemController = self.storyboard!.instantiateVIEwControllerWithIDentifIEr("ItemController") as PageItemController        pageItemController.itemIndex = itemIndex        pageItemController.imagename = characterImages[itemIndex]        return pageItemController}    return nil}func createPageVIEwController() {    let pageController = self.storyboard!.instantiateVIEwControllerWithIDentifIEr("PageController") as UIPageVIEwController    pageController.dataSource = self    if characterImages.count > 0 {        let firstController = getItemController(0)!        let startingVIEwControllers: NSArray = [firstController]        pageController.setVIEwControllers(startingVIEwControllers,direction:     UIPageVIEwControllerNavigationDirection.Forward,animated: false,completion: nil)    }    pageVIEwController = pageController    addChildVIEwController(pageVIEwController!)    self.vIEw.addSubvIEw(pageVIEwController!.vIEw)    pageVIEwController?.dIDMovetoParentVIEwController(self)}func setupPageControl() {    let appearance = UIPageControl.appearance()    appearance.pageIndicatorTintcolor = UIcolor.graycolor()    appearance.currentPageIndicatorTintcolor = UIcolor.whitecolor()}func presentationCountForPageVIEwController(pageVIEwController: UIPageVIEwController) -> Int {    return characterImages.count}func presentationIndexForPageVIEwController(pageVIEwController: UIPageVIEwController) -> Int {    return 0}}class PageItemController: UIVIEwController {@IBOutlet weak var imageCharacterChoose: UIImageVIEw!var itemIndex: Int = 0var imagename: String = "" {    dIDSet {        if let imageVIEw = imageCharacterChoose {imageCharacterChoose.image = UIImage(named: imagename)        }    }}overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    imageCharacterChoose!.image = UIImage(named: imagename)}overrIDe func dIDReceiveMemoryWarning() {    super.dIDReceiveMemoryWarning()}}

我想知道用户是否正确地从一个视图滑动到另一个视图.就此而言,我需要使用TransitionCompleted方法来工作:

func pageVIEwController(ProVIEw: UIPageVIEwController,dIDFinishAnimating finished: Bool,prevIoUsVIEwControllers pageVIEwController: [AnyObject],TransitionCompleted completed: Bool){// If the page dID not turnif (!completed){// You do nothing because whatever page you thought// the book was on before the gesture started is still the correct pageprintln("The page number dID not change.")return;}// This is where you would kNow the page number changed and handle it appropriatelyprintln("The page number has changed.")}

问题是不起作用(控制台输出不打印任何东西),因为参数可能不正确.根据Apple Reference,

pageVIEwController页面视图控制器.
prevIoUsVIEwControllers转换前的视图控制器.

因此,我使用“ProVIEw”和“pageVIEwController”更改了参数,但这似乎不起作用.根据TransitionCompleted方法的代码,正确的参数是什么?我需要申报一些东西吗?

解决方法 问题是pageVIEwController:dIDFinishAnimating:…是一个委托方法,但是这个类不是页面视图控制器的委托.

你有这条线:

pageController.dataSource = self

所以你要设置dataSource.但你永远不会设置代表.设置它:

pageController.delegate = self
总结

以上是内存溢出为你收集整理的ios – 如何在Swift中实现UIPageViewController委托的transitionCompleted?全部内容,希望文章能够帮你解决ios – 如何在Swift中实现UIPageViewController委托的transitionCompleted?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060918.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存