与选择另一个NSb中的NSArrayController进行绑定

| 我有两个笔尖: Store.nib Product.nib Product.nib的文件所有者是
NSViewController
的子类,它具有一个属性ѭ1which,并绑定了各种控件:
@property(nonatomic, retain) SRProduct *product;
Store.nib有一个绑定到属性
SRApplicationController
的to3ѭ对象:
@property(nonatomic, retain) NSArray *products;
SRApplicationController
NSArrayController
物体有出口。 在
-[SRApplicationController init]
方法中,我使用Product.nib笔尖初始化了一个
SRProductController
对象。在ѭ10中,将产品控制器的视图添加到Store.nib中的视图,并将
SRApplicationController
对象的
productsArrayController
属性(出口)绑定到产品控制器的
product
- (id)init {
  if (self = [super init]) {
    self.productController = [[SRProductController alloc] initWithNibName:@\"Product\" bundle:nil];
  }

  return self;
}

- (void)awakeFromNib {
  [self.productView removeAllSubviews]; // this method is from a category
  [self.productView addSubview:self.productController.view];
  [self.productController.view setFrame:self.productView.bounds];

  [self.productsArrayController bind:@\"selectedObjects\" toObject:self.productController withKeyPath:@\"product\" options:nil];
}
当我运行该应用程序时,没有任何错误,没有警告,控制台仍然为空,Store.nib中所有产品的表视图显示了所有产品,我可以选择它们。问题在于Product.nib中的所有字段均为空,但它们绑定到文件所有者的
product
属性。谁能帮助我解决这个问题?提前致谢。 :)     
已邀请:
在某个地方有一些示例代码显示了如何执行此操作,我不记得是苹果代码还是其他代码。基本上,您需要做的是在每个nib文件中都有一个数组控制器。列表样式笔尖中的阵列控制器应正常绑定,并且其阵列控制器应为可访问属性。在第二个nib文件中,您需要照常绑定阵列控制器的内容。您还需要确保此详细信息笔尖的文件所有者与列表笔尖的文件所有者具有连接。然后,您将详细信息数组控制器的排序描述符绑定到
listController.arrayController.sortDescriptors
(它可能实际上是
sortDescriptor
忘记了我的脑袋)。您还可以以相同方式绑定选择索引。这将使明细笔尖中的阵列控制器能够跟上明细笔尖中发生的事情,之后,您只需像平常一样绑定每个明细元素即可(即,产品名称文本字段的值绑定为18)。 如果您忘记将详细信息笔尖的数组控制器的排序描述符绑定到列表笔尖中与其对应的数组描述符,则详细信息笔尖将在列表中的每次选择更改时更新,但可能不会更改为正确的产品(绑定只是通过selectionIndex而不是选择了什么对象)。     
在为Product.nib分配视图控制器时,应将其\“ product \”属性绑定到数组控制器的选择中,这只能用代码完成,但是这样可以避免需要多个数组控制器实例,并且无需将它们绑定在一起,因此它们看起来相同。 另外,我建议不要将阵列控制器的内容绑定到自己的NSArray,如果不绑定该属性,则阵列控制器将分配和管理自己的阵列。您将能够直接从中添加/删除对象,而不必依靠自己的属性来仔细通知NSArrayController发生了更改。 \“ content \\”绑定允许将数组控制器的rangedObjects绑定到另一个控制器的内容,从而能够对内容进行不同的过滤和排序。     

要回复问题请先登录注册