【问题标题】:How to pass data to ViewController in new storyboard如何在新故事板中将数据传递给 ViewController
【发布时间】:2018-11-20 15:12:11
【问题描述】:

我使用此代码转到新故事板并将变量 X 传递给新故事板中的 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)

但我得到这个错误:

“UIViewController”类型的值没有成员“myVar”

【问题讨论】:

  • 错误它自己说在 UIViewController 你需要先创建 myVar 名称变量,这是基本的东西

标签: swift xcode uiviewcontroller uistoryboard


【解决方案1】:

在这一行:

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

您说的是“从情节提要中实例化一个视图控制器,并推断其类型为UIViewController”。但是,您需要将其指定为ViewControllerCall

您可以通过类型转换来做到这一点 - 添加as? ViewControllerCall。 (或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 的视图控制器不是 ViewControllerCall 类型,它将使您的应用崩溃。

【讨论】:

  • 谢谢,但我再次收到错误:“ViewControllerIndex”类型的值没有成员“myVar”
  • @salarimameri 标识符为 ViewControllerCall 的视图控制器的类名是什么?
  • 类名: 类 ViewControllerCall: UIViewController, QBRTCClientDelegate {.和故事板ID:ViewControllerCall
【解决方案2】:

您只需更改第二行代码。 1. 转到您的 Main 故事板并检查要为其传递变量的 ViewController 的类,并将故事板标识符设置为与类名相同。 2. 现在,如果你的类名是“ViewControllerCall”,那么你的行代码如下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 2012-01-15
    • 2012-03-31
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多