我的Interface Builder文件中有两个控件,每个控件我都在代码中创建了一个单独的委托类(Control1Delegate和Control2Delegate).我在界面构建器中创建了两个"对象",使它们成为该类型,并将控件作为委托连接到它们.代表工作得很好.我的问题是,我需要将一个代表的信息分享给另一个代表,我不确定如何.
做这个的最好方式是什么?将两个代表组合成一个类,或者以某种方式访问他们都能阅读的第三个类?因为我实际上并没有在我的代码中的任何地方初始化类,所以我不确定如何获取对它的实际实例的引用(如果有实际的实例),或者甚至访问"main"类,该项目随之而来.
您可以将委托中的出口添加到其他委托.有两种方法可以在IB中为对象添加插座(假设您使用的是Xcode/IB 3.0或更高版本:
如果尚未为委托类生成代码,请选择所需的委托,然后在IB检查器中打开"对象标识"选项卡.添加NSObject类型的"类出口".然后,您应该能够将此新插座设置为另一个代理.当然,您必须为委托类生成代码,并在加载nib之前将生成的源文件添加到Xcode项目中.
如果您已经为委托类生成了代码(或者将NSObject添加到您的NIB并将其类设置为Xcode项目中的现有类),请将一个实例变量添加到委托类:
IBOutlet id outletToOtherDelegate;
只要您的Xcode项目打开(如NIB窗口左下方的绿色气泡所示),IB将自动检测新的插座并允许您将其分配给NIB中的其他委托对象.
Cocoa在NIB加载时自动连接这些插座.一旦awakeFromNib
调用了委托对象的实例,就可以假设NIB中的所有其他对象都已实例化,并且所有出口都已连接.但是,您不应该在接听电话时下订单awakeFromNib
.