gpt4 book ai didi

ios - 准备 segue : Cannot convert value of type 'UIViewController' to specified type 'SecondViewController'

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:25 25 4
gpt4 key购买 nike

我知道我肯定在这里遗漏了一些明显的东西,但我似乎无法通过它的实际类型来引用目标 View Controller 。我按照以下步骤从头开始创建了一个新项目来对此进行测试:

  • 创建一个新的单 View 应用程序项目
  • 添加一个新的 View Controller
  • 创建一个新类,子类化 UIViewController,并将其命名为 SecondViewController
  • 将这个新类设置为第二个 View Controller 的自定义类(现在它的标题是第二个 View Controller )
  • 向第一个 View Controller 添加一个按钮,然后按住 Ctrl 键单击它到第二个 View Controller,然后从 Action Segue 列表中选择 Show
  • 向 SecondViewController 添加了一个“id”属性
  • 将此代码添加到第一个 View Controller :

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    let vc: SecondViewController = segue.destinationViewController
    vc.id = "test"
    }

这会导致错误 Cannot convert value of type 'UIViewController' to specified type 'SecondViewController'。我已经尝试了我能想到的一切,尝试了所有的 segue 类型等,但我没有想法。我知道 segue 本身的工作就像我注释掉它确实调用第二个 View Controller 的代码一样(我什至在名称中添加了一个标签只是为了确定)。

我是 Swift 和 Storyboard 的新手,所以我在这里可能缺少一些简单的东西,但我们将不胜感激任何帮助!

最佳答案

您应该可以像这样设置值。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if let vc: SecondViewController = segue.destinationViewController as? SecondViewController {
vc.id = "test"
}
}

如果您添加其他 segue,这也会更安全。

另一种方法是用

强制转换 Controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
let vc: SecondViewController = segue.destinationViewController as! SecondViewController
vc.id = "test"
}

这段代码应该可以编译,但是如果使用错误的 destinationViewController 调用它会崩溃.

关于ios - 准备 segue : Cannot convert value of type 'UIViewController' to specified type 'SecondViewController' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745550/

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