2016-02-24 56 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

您的代碼有一些錯誤,你在if中分配另一個ViewController,但返回之前聲明的ViewController。試用這個版本http://pastebin.com/X07xMbCB。或者你可以添加「return vc!」在if語句中 – lorenzoliveto