我可以在.nib中定义插座而无需指定控制器吗?

时间:2011-09-11 17:43:26

标签: objective-c cocoa

我有一个按钮,我希望相关控制器可以访问该按钮。但是现在所有者是一个通用的NSViewController,在AppDelegate中我将nib分配给控制器,如:

[browseViewController initWithNibName:@"BrowseView" bundle:[NSBundle mainBundle]];

但是在nib文件中是否可以通常分配按钮的引用插座?换句话说,给出口一个名称并指向文件所有者,然后如果/当笔尖连接到控制器时,如果该控制器有一个同名的出口,那么它是否正常工作?

1 个答案:

答案 0 :(得分:1)

文件所有者在IB中连接时必须具有特定插座和/或操作。即使您可以将其连接到不存在的插座,也会在加载笔尖时引发异常。我想检查它是否有一个插座,将它连接到一个对象,保存笔尖,从对象中删除插座并运行应用程序。将引发NSUnknownKeyException。

最简单的方法是使用控制器的公共超类。如果无法从共同的祖先派生控制器,我看到的唯一解决方法是制定一个协议,您可以在其中定义插座属性和操作。制作符合协议的对象

MyObject:NSObject< MyNibProtocol>

现在在笔尖中使用此对象来连接出口和动作。 但是,属性和方法不能是可选的,您必须实现它们。