NSViewController IBOutlet 始终为零

NSViewController IBOutlet is always nil

我有一个 Cocoa 应用程序,它有一个主 NSWindowController 和一个 NSView 连接到一个 NSViewController 对象,如下所示:

CloudCardsViewController 是一个 NSViewController,其 NibIBOutletNSStackView。当我尝试访问插座时,应用程序崩溃并在控制台上显示此错误:

fatal error: unexpectedly found nil while unwrapping an Optional value 2017-09-16 19:46:43.756852+0200 AppName[3402:150754] fatal error: unexpectedly found nil while unwrapping an Optional value

如果我通过代码添加 NSViewController,工作正常...

代码如下:

如果我打印 baseStackView 结果是 nil

有什么想法吗? 谢谢!

您的代码的问题在于您 从 XIB 文件加载 MainWindowControllerMainWindowController 被初始化,只有来自 CloudCardsViewontroler 的连接的 XIB 被初始化。 但是您的 CloudCardsViewController 从未真正为自己初始化过 。你不能这样使用你的CloudCardsViewController。您需要对其进行初始化,然后将其添加到您的 MainWindowController

您直接使用初始化程序实例化了 class。插座不会以这种方式连接。 Interface Builder 创建您的 classes 的自定义实例,并将这些实例编码到 NIB 和 Storyboard 中以进行重复解码,它并不定义 classes 本身。