2015-11-06 4 views
0

View of my viewControllerКак использовать UIPageViewController

Быстрый язык предпочтительный.

Я хочу, чтобы в UIPageViewController было три вида контроля над ним (проверьте изображение). Я не знаю, как правильно реализовать три viewControllers в UIPageViewController, прежде чем я разместил этот вопрос, я оглянулся на форуме для подобных вопросов, но я его не нашел.

На белом viewController я подключил к нему другие viewControllers, я просто хочу, чтобы та же самая навигационная навигационная панель, как «Youtube» и «SnapChat».

Я новичок в Xcode и, если это возможно немного подробное объяснение так что я буду понимать концепцию этого. (Я уже прочитал о UIPageViewController на сайте Apple's.)

Swift язык предпочтителен. Спасибо за помощь.

ответ

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

спасибо, у меня есть вопрос о том, как вы это делаете: класс PagingController: UIViewController, UIPageViewControllerDataSource {}. Где я могу поместить эту строку кода? это в первом представлении контроллера? если это так, то оно не будет конфликтовать с моим классом уже в этом файле viewcontroller.swift? – Nathannn

+0

Откуда вы получили 'DietDayTableViewController'? – Nathannn

Смежные вопросы