2017-04-07 131 views
1

我有一個視圖控制器的數據我想通過另一個視圖控制器,但我已經設置爲模態呈現,所以我有他們之間的導航控制器。如何將數據從第一個視圖控制器通過導航控制器傳遞到第二個視圖控制器?如何將數據從視圖控制器傳遞到導航控制器,然後傳遞給另一個視圖控制器?

我有這樣的代碼中的第一個視圖控制器:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "presentPopup" 
    { 
     let destViewController = segue.destination as! NavigationViewController 
     destViewController.myData2 = myData 
    } 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 

然後將此代碼導航控制器:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let destViewController = segue.destination as! SecondViewController 
    destViewController.myData3 = myData2 
} 

但它不工作。

+0

你不需要在navigationviewcontroller中編寫代碼 –

+0

[通過導航控制器的Swift傳遞數據]的可能重複(http://stackoverflow.com/questions/25369412/swift-pass-data-through-navigation-controller ) –

+0

檢查鏈接https://code.tutsplus.com/tutorials/ios-sdk-passing-data-between-controllers-in-swift--cms-27151 –

回答

2

可以在第一視圖控制器使用:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "presentPopup" 
    { 
     let destViewController = segue.destination as! NavigationViewController 
     let secondViewcontroller = destViewController.viewcontrollers.first as! SecondViewcontroller 
     secondViewcontroller.myData2 = myData 
    } 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
+0

它說NavigationViewController的值沒有成員'第一' –

+1

哦,對不起忘了viewcontrollers。請再次輸入我的密碼。我剛剛更新。 –

+0

哦,好的。它現在有效。謝謝! –

0

如果你有2個viewControllers,在故事板firstViewControllersecondViewController,你讓他們之間SEGUE。

firstViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "presentPopup" { 
     let destViewController = segue.destination as! secondViewController 
     destViewController.myData2 = myData 
    }  
} 

secondViewController聲明:

var myData2: [same type with myData]? // now you can use myData2 

perfomeSegue(),該myData2將具有價值。

+0

我試過了,它沒有用,因爲segue連接到兩個視圖控制器之間的導航視圖控制器。 –

相關問題