2015-11-06 65 views
0

View of my viewController如何使用UIPageViewController

首選Swift語言。

我想UIPageViewController有三個viewControllers(檢查圖像)。 我不知道如何正確地將三個viewController實現到UIPageViewController中,然後我發佈了這個問題,我在論壇上查找了類似的問題,但是我沒有找到任何。

在白色viewController我連接其他viewControllers到它,我基本上只是想像「Youtube」和「SnapChat」相同的滑動導航。

我很新的Xcode和可能的話有點詳細的解釋,所以我就明白了它的概念。(我已經讀了有關UIPageViewController上Apple's網站。)

雨燕語言首選。 感謝您的幫助。

回答

1

有很多方法可以使用它。我更喜歡這樣做。

class PagingController: UIViewController, UIPageViewControllerDataSource { 

    let pageController:UIPageViewController 

    //Initializing PageController 
    required init(coder aDecoder: NSCoder) { 
     pageController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) 
     super.init(coder: aDecoder) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     //Assingning the protocol inplemetation 
     pageController.dataSource = self 
     //Adding the view 
     if let initialViewController = viewControllerAtIndex(0) { 
      pageController.setViewControllers([initialViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated:false, completion: nil) 
      addChildViewController(pageController) 
      view .addSubview(self.pageController.view) 
      pageController.didMoveToParentViewController(self) 
     } 
    } 


    //Adding the next view controller 
    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 
     let currentDay = ((viewController as! UINavigationController).viewControllers[0] as! DietDayTableViewController).currentDay 
     let nextDay = (currentDay + 1) % 7 

     return viewControllerAtIndex(nextDay) 
    } 


    //Adding the previous view controller 
    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 
     let currentDay = ((viewController as! UINavigationController).viewControllers[0] as! DietDayTableViewController).currentDay 

     let previousDay = ((currentDay - 1) + 7) % 7 

     return viewControllerAtIndex(previousDay) 
    } 


    //A function witch gives me the right view controller for each page 
    func viewControllerAtIndex(index:Int) -> UINavigationController?{ 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     if let vc = storyboard.instantiateViewControllerWithIdentifier("DietDayTableViewController") as? DietDayTableViewController { 
      vc.currentDay = index 
      return UINavigationController(rootViewController: vc) 
     } 

     return nil 
    } 
} 

我添加評論以幫助。這個pageController是一週中的幾天。每一頁都是一天,我爲每個頁面使用相同的viewController。 pageviewcontroller的概念是,你已經把前一個視圖控制器和當前視圖控制器的下一個視爲一個對象。

+0

謝謝,我有一個關於你這樣做的問題:class PagingController:UIViewController,UIPageViewControllerDataSource {}。我在哪裏放這行代碼?它在第一個視圖控制器中嗎?如果是的話,它會不會與我的課程已經在viewcontroller.swift文件中發生衝突? – Nathannn

+0

你從哪裏得到'DietDayTableViewController'? – Nathannn