我正在构建一个用于生产的Cocoa应用程序,当我创建一个没有实例化的NSViewController路由时,我得到了如下所示的错误。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[NSNib _initWithNibNamed:bundle:options:] could not load the nibName: ContentFully.AnotherController in bundle (null).实际上,我通过使用NSViewController来添加NSStoryboard来解决我的问题,但是我想知道当我以编程方式调用它时发生了什么,以及为什么会崩溃?
工作场景
let storyboard = NSStoryboard(name: "Dashboard", bundle: nil)
let vc = storyboard.instantiateInitialController() as! AnotherController崩溃场景
let vc = AnotherController()
self.view.window?.contentViewController = vc即使我用NSStoryboard完全以编程方式和非关系方式创建了一个类,当我更改contentViewController时也无法使用它。是否有必要搜索NSBundle中的每个控制器以查找Swift
提前感谢
发布于 2020-06-29 15:20:49
一个非常简单的工作版本是:
import Cocoa
class AnotherController: NSViewController {
override func loadView() {
view = NSView(frame: NSMakeRect(0.0, 0.0, 400.0, 270.0))
let label = NSTextField(labelWithString: "Another Controller")
view.addSubview(label)
}
}我可以从我的第一个控制器调用它,使用您所说的代码,崩溃,并得到预期的结果。
@IBAction func replaceMe(_ sender: Any) {
let vc = AnotherController()
self.view.window?.contentViewController = vc
}https://stackoverflow.com/questions/62641116
复制相似问题