如何将数据从视图控制器传递到导航控制器,然后再传递到另一个视图控制器?

5

我有一个从视图控制器中获取的数据,我想将其传递到另一个视图控制器,但我已经将其设置为以模态方式呈现,因此它们之间有一个导航控制器。如何通过导航控制器将第一个视图控制器中的数据传递到第二个视图控制器?

我在第一个视图控制器中有以下代码:

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
}

但是它不起作用。


你不需要在 NavigationViewController 中编写代码。 - Sour LeangChhean
请查看以下链接:https://code.tutsplus.com/tutorials/ios-sdk-passing-data-between-controllers-in-swift--cms-27151。 - Nandkishor mewara
2个回答

5
您可以在第一个视图控制器中使用这个功能:
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.
}

导航视图控制器的值没有“first”成员。 - Ethan Zhao
1
哦,抱歉忘记了视图控制器。请再看一下我的代码,我刚刚更新了。 - Sour LeangChhean

0
如果您在storyBoard中有2个视图控制器,即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将会有值。


1
我尝试过这个,但它没有起作用,因为segue连接的是两个视图控制器之间的导航视图控制器。 - Ethan Zhao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接