简体   繁体   English

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

[英]How to pass data from view controller to a navigation controller and then to another view controller?

I have data from a view controller I want to pass another view controller, but I have it set to present modally, so I have a navigation controller between them. 我有一个视图控制器的数据我想传递另一个视图控制器,但我设置为模态,所以我有一个导航控制器。 How do I pass data from the first view controller through the navigation controller to the second view controller? 如何将数据从第一个视图控制器通过导航控制器传递到第二个视图控制器?

I have this code in the first view controller: 我在第一个视图控制器中有这个代码:

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.
}

Then this code in the navigation controller: 那么这个代码在导航控制器中:

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

But it doesn't work. 但它不起作用。

You can use this in First ViewController: 您可以在First ViewController中使用它:

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.
}

If you have 2 viewControllers, firstViewController and secondViewController in storyBoard, you make segue between them. 如果你有2个viewControllers, firstViewControllersecondViewController在故事板,你让他们之间SEGUE。

In firstViewController : firstViewController

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

In secondViewController declare: secondViewController声明:

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

After perfomeSegue() , the myData2 will have value. perfomeSegue()myData2将具有值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将数据传递到导航控制器中的另一个视图控制器 - Pass data to another view controller in navigation controller 如何将数据从一个视图控制器传递到导航控制器中嵌入的另一个视图控制器 - How to pass data from one view controller to another view controller which is embedded in navigation controller 如何在IOS中将数据从一个视图传递到另一个视图控制器? - How to pass data from one view to another view controller in IOS? 如何将数据从表视图传递到另一个视图 controller - How to pass the data from table view to another view controller 如何将不同的数据从表视图传递到另一个视图 controller - How to pass the different data from table view to another view controller 如何将数据传递给嵌入在导航控制器中的集合视图控制器 - How to pass data to collection view controller embedded in navigation controller 如何在导航控制器中将数据从一个视图传递到另一个视图 - How to pass data from one view to the other in a navigation controller 如何将视图 controller 中的数据传递到表视图 controller? - How to pass the data from view controller to the table view controller? 如何从另一个视图控制器实例化导航控制器? - How to instantiate a navigation controller from another view controller? 如何将数据传递到另一个视图控制器? - How to pass data to another view controller?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM