使用从故事板实例化的视图控制器进行强制转换

时间:2017-07-15 18:56:44

标签: swift cocoa nsstoryboard

我有一个实例化新窗口控制器的视图控制器。 我需要将一个对象传递给该窗口控制器的视图控制器。 以下是我到目前为止的情况:

let storyboard = NSStoryboard(name: "Main", bundle: nil)
if let windowController = storyboard.instantiateController(withIdentifier: "customerEditWindowController") as? NSWindowController
{
  let viewController = windowController.contentViewController as! EditCustomerViewController
  viewController.customer = customer // (An object)
  windowController.window?.makeKeyAndOrderFront(self)
}

窗口按预期显示,然后Xcode陷入调试器并显示错误:

  

无法将类型'NSViewController'(0x7fffd1dcc4e0)的值转换为   'inventory2.EditCustomerViewController'(0x100011660)。

我很困惑,因为我的EditCustomerViewController扩展了NSViewController。

class EditCustomerViewController: NSViewController

1)为什么不能将NSViewController转换为EditCustomerViewController?
2)有没有更好的方法将数据导入新的视图控制器?

1 个答案:

答案 0 :(得分:1)

在黑暗中这是一个简单的镜头,但你是否在Interface Builder中设置了视图控制器的类名?