无法链接IBaction或IBOutlet

时间:2013-11-19 17:42:47

标签: objective-c xcode cocoa ibaction iboutlet

当我尝试通过将我的界面链接到头文件来创建IBOutlet或IBAction时,我没有选择创建一个。

是的,这可能是重复但我还没有在任何其他帖子上找到我的答案!

谢谢:)

@property (assign) IBOutlet NSWindow *window;
- (IBAction)calculateClicked:(id)sender;
@property (weak) IBOutlet NSTextField *ATextField;
@property (weak) IBOutlet NSTextField *BTextField;
@property (weak) IBOutlet NSTextField *CTextField;

2 个答案:

答案 0 :(得分:2)

我不确定您想要添加插件/操作的对象是什么类型,但是可能会因为window引用的存在而推断您正在尝试将其添加到您的应用代理中。在这种情况下,您只需确保您的应用程序委托出现在对象列表中,并且您已指定该应用程序委托的基类:

app delegate

但是,如果您使用的是某个自定义控制器对象,则可以将通用对象从库中拖到NIB的对象列表中。然后为该对象指定自定义控制器类(在我的示例中为MyController):

Add controller to NIB

完成此操作后,当您将插座/操作从窗口拖到助理编辑器时,除了应用程序委托之外,您的自定义控制器对象接口/实现文件将是您可以使用的选项。


我原来的答案是以iOS为中心的答案。以上应描述Cocoa的等价物。我会在这里保留这个原始答案以供参考。

原始答案:

在Interface Builder中,确保为要连接出口的对象指定基类。如果将这些插座放在视图控制器中,请确保故事板的场景已定义视图控制器的类。如果您的助理编辑器设置为“自动”,则会更容易一些:

storyboard

如果您使用的是故事板,则上述屏幕快照是相关的。如果使用NIB,想法是一样的,但您需要确保设置NIB的文件所有者:

NIB

如果IBOutlet引用位于UIView子类中,则类似地必须为故事板场景的视图(或NIB视图)指定基类。

答案 1 :(得分:0)

我见过Xcode偶尔这样做(bug)。关闭/重新打开Xcode之前已经为我修好了。

另外,请确保您的接口文件Class指向此类/标题。