首页 > 解决方案 > 通过不同故事板、Swift、iOS、Xcode 上的 segue 和 Navigation 将数据从一个控制器传递到另一个控制器

问题描述

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

这是我的代码:-

准备。

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 的视图控制器

截图。 segue的链接和名称

去往的 VC 名称

标签: iosswiftsegue

解决方案


您必须考虑下一个故事板中的导航控制器,因此您的 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 的实例。


推荐阅读