我的界面生成器发生了非常奇怪的事情。因此,我在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:
我不知道为什么会出现此错误,因为我已正确设置了代码:
并且文件的所有者设置为正确的类(AddController):
那么,为什么它尝试将我的视图连接到
NSWindowController
而不是我的子类?编辑:
我在代码中实际使用AddController的位置:
AppDelegate.h
AppDelegate.m
它在appdelegate中,因为它是一个菜单栏应用程序。 (以防有人在想)
最佳答案
因为在您正在运行的程序中实例化的实际对象是NSWindowController
,而不是AddController
。您已经向我们展示了正确地声明了AddController
,并且已经向我们展示了您的笔尖的文件所有者被设置为AddController
;太好了,这就是为什么您不会收到有关错误连接的编译时警告或错误的原因。但是您还没有向我们展示控制器对象的实际实例化位置。并检查一下,大概可以发现它尚未更改为AddController
。因此,在运行时,您会得到一个NSWindowController
,这违反了您对IB的承诺。因此您会遇到运行时错误。
关于objective-c - 文件的所有者认为这是父类(super class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35028973/