有很多方法可以使用它。我更喜歡這樣做。
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的概念是,你已經把前一個視圖控制器和當前視圖控制器的下一個視爲一個對象。
謝謝,我有一個關於你這樣做的問題:class PagingController:UIViewController,UIPageViewControllerDataSource {}。我在哪裏放這行代碼?它在第一個視圖控制器中嗎?如果是的話,它會不會與我的課程已經在viewcontroller.swift文件中發生衝突? – Nathannn
你從哪裏得到'DietDayTableViewController'? – Nathannn