我的界面构建器正在发生一些非常奇怪的事情。所以我在Xcode中创建了一个NSWindowController
子类,并启用了create XIB选项。我开始编码,并成功连接到文件的所有者。
但是,当我运行我的应用程序时,我收到错误:
Failed to connect (workspaceControl) outlet from (NSWindowController) to (NSSegmentedControl): missing setter or instance variable
Failed to connect (workspaceField) outlet from (NSWindowController) to (NSTextField): missing setter or instance variable
Could not connect action, target class NSWindowController does not respond to -changeNumberOfWorkspaces:
我不知道为什么会出现这个错误,因为我的代码设置正确:
File的所有者设置为正确的类(AddController):
那么为什么它会尝试将我的视图连接到NSWindowController
而不是我的子类?
编辑:
我实际在代码中使用AddController:
AppDelegate.h
AppDelegate.m
它在appdelegate中,因为它是一个菜单栏应用程序。 (如果有人想知道的话)
答案 0 :(得分:3)
因为在正在运行的程序中实例化的实际对象是NSWindowController
,而不是AddController
。您已向我们展示AddController
已正确声明,并且您已向我们展示您的笔尖的文件所有者设置为AddController
;这很好,这就是为什么你没有得到关于错误连线的编译时警告或错误。但是你还没有向我们展示控制器对象实际被实例化的位置;并且检查可能会发现它没有被改为AddController
。所以在运行时你有一个NSWindowController
,这违反了你所承诺给IB的情况;所以你得到运行时错误。