通过不同故事板上的 segue 和导航将数据从一个控制器传递到另一个控制器,Swift、iOS、Xcode

Pass data from one controller to another via segue and Navigation on different storyboard, Swift, iOS, Xcode

我试图通过 segue 将一些数据从一个故事板传递到另一个故事板,第二个故事板 VC 嵌入在导航控制器中,我找不到在代码中添加导航控制器的地方,当我我会收到一条错误消息说 segue link 不存在吗?

这是我的代码:-

准备。

let storyboard = UIStoryboard(name: "ProdProj", bundle: nil) 
            let vc = storyboard.instantiateViewController(withIdentifier: "ProjectsListVC") as? ProjectsListVC

            vc!.projectsSentT = ProjecctProd
            vc!.logedInAsT = "Prod"

和我的表演。

self.performSegue(withIdentifier: "toProjectsProd", sender: nil)

如果我添加导航来执行 segue,我会收到一条错误消息,指出没有使用该名称的 segue。 如果我不添加导航,它会说没有名为 ProjectsListVC

的视图控制器

截图。 The link and name of segue

您必须考虑下一个故事板中的导航控制器,因此您的 prepare(for: sender:) 函数应如下所示:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let vc = (segue.destination as! UINavigationController).topViewController as! DestinationViewController
    vc!.projectsSentT = ProjecctProd
    vc!.logedInAsT = "Prod"
   }

其中 DestinationViewController 是嵌入在 navigationController 中的第二个视图控制器的名称。并直接使用 segue.destination 和 viewController 的实例。

首先,在第一个故事板上创建故事板参考,如下所示:

接下来,为引用创建 segue:

要将数据发送到新控制器,请使用准备方法 https://developer.apple.com/documentation/uikit/uiviewcontroller/1621490-prepare