2017-03-01 68 views
0

我有2个UIViewControllers作为UIPageViewController的项目。它适用于幻灯片,但我想从pageOne移动到pageTwo与按钮的动作。我该怎么做?视图控制器与按钮之间的转换(UIPageViewController项目)

这里是我的代码和故事板预览:

Pager.swift的内容:PageOne.swift的

import UIKit 

class Pager: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource, UIScrollViewDelegate 
{ 
var viewsArray: [UIViewController] = [] 

var pageOne: UIViewController = UIViewController() 
var pageTwo: UIViewController = UIViewController() 

var currentIndex = 0 
var previousIndex = 0 
var nextIndex = 0 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    self.delegate = self 
    self.dataSource = self 

    pageOne = (storyboard?.instantiateViewController(withIdentifier: "pageOne"))! 
    pageTwo = (storyboard?.instantiateViewController(withIdentifier: "pageTwo"))! 

    viewsArray.append(pageOne) 
    viewsArray.append(pageTwo) 

    setViewControllers([pageOne], direction: .forward, animated: true, completion: nil) 
} 

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? 
{ 
    currentIndex = viewsArray.index(of: viewController)! 
    if currentIndex == 1 
    { 
     return nil 
    } 
    else 
    { 
     nextIndex = abs((currentIndex + 1) % viewsArray.count) 
     return viewsArray[nextIndex] 
    } 
} 

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? 
{ 
    currentIndex = viewsArray.index(of: viewController)! 
    if currentIndex == 0 
    { 
     return nil 
    } 
    else 
    { 
     previousIndex = abs((currentIndex - 1) % viewsArray.count) 
     return viewsArray[previousIndex] 
    } 
} 


func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int 
{ 
    return viewsArray.count 
} 

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int 
{ 
    return 0 
} 

override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
} 
} 

内容:

import UIKit 

class PageOne: UIViewController 
{ 
var pager = Pager() 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
} 

@IBAction func forwardButton(_ sender: Any) 
{ 
    pager.setViewControllers([pager.pageOne], direction: .forward, animated: true, completion: nil) 
} 
} 

enter image description here

回答

0

你需要写下面一行

pageController?.setViewControllers([YOUR_VIEW_CONTROLLER], direction: direction, animated: true, completion: nil) 

给予适当的方向正向或反向此基础上控制你在

希望这将帮助你

您需要通过寻呼机你既viewcontrollers

pageOne.pager = self 
pageTwo.pager = self 
+0

是否这样? @IBAction FUNC forwardButton(_发件人:任何) { pager.setViewControllers([pager.pageOne],方向:的.forward,动画:真,完成:无) } --- 我有更新问题体 –

+0

这是正确的解决方案? –

+0

是的,你可以这样做 –