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

标签 ios swift xcode-storyboard

我知道我肯定在这里遗漏了一些明显的东西,但我似乎无法通过它的实际类型来引用目标 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/

相关文章:

jquery - IOS 8+ 上的 Chrome crweb.js 和 __gCRweb 问题

ios - 适用于 IOS 11 及更高版本的 Ionic 1 应用程序中的内容重叠

ios - 如何在 objective-c 中保存 cookie?

swift - 动画多个原型(prototype) tableview 单元格

ios - 表格单元格中标签的 sizeToFit 函数的意外行为

ios - TableviewController/行/图像的问题

ios - 无法从 Storyboard 中的 UITapGestureRecognizer 拖动 IBAction

ios - iOS 的 Codemagic 自动应用程序签名失败

ios - Xcode Storyboard用蓝色遮盖了 uitabbarcontroller 元素

macos - 从 Storyboard、OS X、swift 中的 View Controller 访问菜单项