[英]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, firstViewController
和secondViewController
在故事板,你让他们之间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.