2015-05-08 44 views
0

我必須編寫一個支持iOS 7和8的iOS應用程序,並且在此應用程序中,我有兩個視圖控制器A和B以及導航控制器和它們之間的連線。當SEGUE激活,我不得不從視圖控制器的數據獲取到視圖控制器B.我的代碼完美地工作在iOS 8而不是在iOS 7prepareForSegue無法在iOS 7上獲得目標視圖控制器

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 

    if segue.identifier == userDataSegue { 
     let navController = segue.destinationViewController as? UINavigationController 

     if let userDataTableViewController = navController?.topViewController as? UserDataTableViewController { 
      userDataTableViewController.userData = user 
     } 
    } 
} 

你知道爲什麼會發生這種情況,以及如何我可以修復它嗎?我可以通過將東西保存在NSUserDefaults中並在vc B中讀取來解決問題,但這會使我的代碼變得混亂。

我感謝所有幫助:d

+0

什麼是'userDataSegue'? – Schemetrical

+0

這是什麼樣的segue?一個模態?因爲如果它是「常規」推送segue,destinationviewcontroller應該是userdatatableviewcontroller而不是另一個navigationcontroller。奇怪的是,你說它適用於ios8 ... –

+0

@AndreSlotta另一個視圖控制器是一個嵌入了導航控制器的常規視圖控制器。它確實可以在iOS 8上運行。 – rodrigoalves

回答

1

不要忘了創建第二ViewController中的公共屬性用戶數據。

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
{ 
if (segue.identifier == "segueTest") { 
var svc = segue!.destinationViewController as secondViewController; 

svc.userData = user 

} 
} 
相關問題