
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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)