2016-02-24 3 views
0

У меня есть контроллер просмотра страницы с массивом, ссылающимся на раскадровку ID контроллеров, которые я хочу показать внутри. Как я могу передавать данные от корневого контроллера до контроллера?PageViewController передает данные дочернему контроллеру

я пытался сделать, чтобы это нравится, но он не

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

    if let index = pages.indexOf(viewController.restorationIdentifier!) { 

     if index < pages.count - 1 { 
      return viewcontrollerAtIndex(index + 1) 
     } 

    } 

    var objectController = viewcontrollerAtIndex(0) as! HF2Object 
    objectController.object = object 
    objectController.serverID = serverID 
    objectController.imageURLsArray = imageURLsArray 


    return nil 
} 

код Всего контроллер

import UIKit 

class HF2PageViewController: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate { 

var pages = ["object", "reviews"] 
var pageViewController = UIPageViewController() 
var object:String? 
var serverID:String? 
var imageURLsArray = [String]() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) 
    pageViewController.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + 64, self.view.frame.width, self.view.frame.height - 64) 

    addChildViewController(pageViewController) 
    self.view.addSubview(pageViewController.view) 

    pageViewController.delegate = self 
    pageViewController.dataSource = self 

    pageViewController.setViewControllers([viewcontrollerAtIndex(0)], direction: .Forward, animated: true, completion: nil) 
    pageViewController.didMoveToParentViewController(self) 


} 

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

    if let index = pages.indexOf(viewController.restorationIdentifier!) { 

     if index < pages.count - 1 { 
      return viewcontrollerAtIndex(index + 1) 
     } 

    } 

    var objectController = viewcontrollerAtIndex(0) as! HF2Object 
    objectController.object = object 
    objectController.serverID = serverID 
    objectController.imageURLsArray = imageURLsArray 


    return nil 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 

    if let index = pages.indexOf(viewController.restorationIdentifier!) { 

     if index > 0 { 
      return viewcontrollerAtIndex(index - 1) 
     } 

    } 

    return nil 
} 

func viewcontrollerAtIndex(index: Int) -> UIViewController { 
    let vc = storyboard?.instantiateViewControllerWithIdentifier(pages[index]) 
    return vc! 
} 

}

ответ

1

В вашем методе viewcontrollerAtIndex вы можете передать данные в экземпляр vc, это UIViewController, который вы собираетесь показать.

+0

уже пробовал, как это https://s.mail.ru/BS9X3Be8HV4D/img-2016-02-24-19-56-31.png, но HF2Object ничего не получает –

+0

С кодом есть некоторые ошибки , вы выделяете другой ViewController внутри if, но возвращаете ранее объявленный. Попробуйте использовать эту версию http://pastebin.com/X07xMbCB. Или вы можете добавить «return vc!» внутри оператора if – lorenzoliveto

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