Connecting delegate classes in Objective-C我的 Interface Builder 文件中有两个控件,每个控件我都在代码中创建了一个单独的委托类(Control1Delegate 和 Control2Delegate)。我在界面生成器中创建了两个"对象",将它们设为该类型,并将控件作为委托连接到它们。代表们工作得很好。我的问题是,我需要将信息从一位代表分享给另一位代表,但我不确定如何。 最好的方法是什么?将两个代表组合成一个类,或者以某种方式访问??他们都可以阅读的第三个类?由于我实际上并未在代码中的任何位置初始化类,因此我不确定如何获取对它的实际实例的引用(如果有它的实际实例),甚至不知道如何访问 "main " 项目附带的类。 您可以将任一委托的出口添加到另一委托。有两种方法可以向 IB 中的对象添加outlets(假设您使用的是 Xcode/IB 3.0 或更高版本: 如果您还没有为您的委托类生成代码,请选择所需的委托,然后在 IB 检查器中打开"对象标识"选项卡。添加一个 NSObject 类型的"类出口"。然后,您应该能够将此新出口设置给其他代表。当然,您必须为您的委托类生成代码并将生成的源文件添加到您的 Xcode 项目中,然后才能加载 nib。 如果您已经为委托类生成了代码(或向您的 NIB 添加了一个 NSObject 并将其 Class 设置为您的 Xcode 项目中的现有类),请向委托类添加一个实例变量: 只要您的 Xcode 项目处于打开状态(如您的 NIB 窗口左下角的绿色气泡所示),IB 将自动检测新的outlets并允许您将其分配给您的 NIB 中的其他委托对象. Cocoa 在 NIB 加载时自动连接这些outlets。在委托对象的实例上调用 由于我在工作,目前我面前没有我的 Mac,但是否可以将一个代表的实例绑定到另一个代表的成员?这类似于将 NSArrayController 绑定到另一个控制器类的成员,例如。 但是,根据委托类所做的事情,如果任务相似,我可能会将它们合并到一个类中。这将完全消除问题。 我认为您可以在每个outlets上创建outlets并交叉绑定它们,以便它们始终拥有相同的数据。如果他们需要共享一个模型对象,那就很整洁了。我实际上不知道该怎么做。我想我曾经在 iPhone 教程中看到过它! |