【问题标题】:How to pass data from view controller to a navigation controller and then to another view controller?如何将数据从视图控制器传递到导航控制器,然后再传递到另一个视图控制器?
【发布时间】:2017-09-02 07:31:46
【问题描述】:

我有来自视图控制器的数据,我想传递另一个视图控制器,但我将它设置为模态呈现,所以我在它们之间有一个导航控制器。如何将数据从第一个视图控制器通过导航控制器传递到第二个视图控制器?

我在第一个视图控制器中有这段代码:

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
}

但它不起作用。

【问题讨论】:

标签: ios swift xcode uiviewcontroller swift3


【解决方案1】:

您可以在 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.
}

【讨论】:

  • 它说 NavigationViewController 的值没有成员 'first'
  • 抱歉忘记了视图控制器。再次请我的代码。我刚刚更新了。
【解决方案2】:

如果你有 2 个 viewController,firstViewControllersecondViewController 在 storyBoard 中,你可以在它们之间进行 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 将有价值。

【讨论】:

  • 我试过了,但没有成功,因为 segue 连接到两个视图控制器之间的导航视图控制器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多