如何将属性绑定到外部控制器?

时间:2013-03-20 13:53:46

标签: macos cocoa interface-builder cocoa-bindings

我使用SDK 10.6,使用Xcode 4.2。

我想将“属性”绑定到存在于“我的笔尖之外”的控制器。我该怎么办:

  • 使用Interface Builder?
  • 没有它?

更确切地说,我想将enabled的{​​{1}}属性绑定到“我的笔尖”之外的arrayController。在界面构建器中,我可以绑定属性的唯一对象是占位符或对象。但是:

  • 我无法更改占位符。
  • 如果我有一个到我的NIB的arrayController,它将在我的NIB加载时创建。

为什么我会遇到这种情况?因为:arrayController在我的NIB中;但按钮在另一个NIB中。第二个NIB是我主要观点的子视图。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我认为我找到了答案。

一些符号:

  • MySubiewControllerMySubiewController.xib是我希望执行某些绑定的几个objets。它们必须被视为子视图。
  • 在我的程序的其他地方,“上面”,我已经有一个myMainArrayController。它是ArrayController,与我的数据相关联,“在我的主视图中创建”。

现在:答案。

  • 首先,例如通过init的{​​{1}}方法,将MySubiewController存储在某个变量中(您必须在myMainArrayController中公开此变量,在你的程序中使用它之前作为.h(它更好)。让我们给这个变量赋予相同的名称(你可以给出任何名字)。例如:

    @property

    您可以在这里告诉您的“子视图”, - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withArrayController:(NSArrayController *)anArrayController { NSLog(@"Creation of an instance of MySubiewController"); self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { myMainArrayController = anArrayController ; } return self; } 已经存在。

  • 使用arrayController然后File's Owner进行绑定。

  • 就是这样!它应该工作!