首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:[NSNib _initWithNibNamed:bundle:options:]无法加载nibName

Swift:[NSNib _initWithNibNamed:bundle:options:]无法加载nibName
EN

Stack Overflow用户
提问于 2020-06-29 15:08:42
回答 1查看 2.4K关注 0票数 1

我正在构建一个用于生产的Cocoa应用程序,当我创建一个没有实例化的NSViewController路由时,我得到了如下所示的错误。

代码语言:javascript
复制
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[NSNib _initWithNibNamed:bundle:options:] could not load the nibName: ContentFully.AnotherController in bundle (null).

实际上,我通过使用NSViewController来添加NSStoryboard来解决我的问题,但是我想知道当我以编程方式调用它时发生了什么,以及为什么会崩溃?

工作场景

代码语言:javascript
复制
let storyboard = NSStoryboard(name: "Dashboard", bundle: nil)
let vc = storyboard.instantiateInitialController() as! AnotherController

崩溃场景

代码语言:javascript
复制
let vc = AnotherController()
self.view.window?.contentViewController = vc

即使我用NSStoryboard完全以编程方式和非关系方式创建了一个类,当我更改contentViewController时也无法使用它。是否有必要搜索NSBundle中的每个控制器以查找Swift

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-29 15:20:49

一个非常简单的工作版本是:

代码语言:javascript
复制
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)
    }
    
}

我可以从我的第一个控制器调用它,使用您所说的代码,崩溃,并得到预期的结果。

代码语言:javascript
复制
@IBAction func replaceMe(_ sender: Any) {
    let vc = AnotherController()
    self.view.window?.contentViewController = vc
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62641116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档