gpt4 book ai didi

swift - 如何在新 Storyboard中将数据传递给 ViewController

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:05 26 4
gpt4 key购买 nike

我使用此代码转到新 Storyboard并将变量 X 传递给新 Storyboard中的 viewController

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewControllerCall")
homeViewController.myVar = "x"
self.present(homeViewController, animated: true, completion: nil)

但是我得到这个错误:

Value of type 'UIViewController' has no member 'myVar'

最佳答案

在这一行中:

let homeViewController: UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewControllerCall")

你说的是“从 Storyboard 中实例化一个 View Controller ,并将其类型推断为 UIViewController”。但是,您需要做的是将其指定为 ViewControllerCall

您可以通过类型转换来做到这一点——添加 as?查看 Controller 调用。 (或者 as!ViewControllerCall,如果您不想使用 if let 子句)。

您的代码应如下所示:

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let homeViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewControllerCall") as? ViewControllerCall {
homeViewController.myVar = "x"
self.present(homeViewController, animated: true)
}

或者

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let homeViewController = mainStoryboard.instantiateViewController(withIdentifier: "ViewControllerCall") as! ViewControllerCall
homeViewController.myVar = "x"
self.present(homeViewController, animated: true)

请注意,在我介绍的第二种方式中使用 as! 时,如果标识符为 ViewControllerCall 的 View Controller 不是 ViewControllerCall 类型,它会使您的应用程序崩溃。

关于swift - 如何在新 Storyboard中将数据传递给 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50796534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com