Objective c NSButton绑定到NSCollectionViewItem:representedObject?

Objective c NSButton绑定到NSCollectionViewItem:representedObject?,objective-c,swift,binding,nsbutton,nscollectionviewitem,Objective C,Swift,Binding,Nsbutton,Nscollectionviewitem,在NSCollectionViewItem视图中预先添加按钮时,我可以在inspector中绑定其操作: 这是毫无问题的 现在,我想在视图的mouseDown:中以编程方式创建该按钮,我应该为bind:选项分配什么,以获得与inspector中的“bind to:Collection视图项”相同的结果 这是密码:(Swift) aButton!。束缚( “论点”, toObject:???,//您应该绑定到NSCollectionViewItem实例,该实例拥有该按钮作为其后代的视图 您是从什

在NSCollectionViewItem视图中预先添加按钮时,我可以在inspector中绑定其操作:

这是毫无问题的

现在,我想在视图的
mouseDown:
中以编程方式创建该按钮,我应该为
bind:
选项分配什么,以获得与inspector中的“bind to:Collection视图项”相同的结果

这是密码:(Swift)

aButton!。束缚(
“论点”,

toObject:???,//您应该绑定到
NSCollectionViewItem
实例,该实例拥有该按钮作为其后代的视图

您是从什么上下文创建按钮并尝试绑定它的?这是在集合视图的控制器中?还是在集合视图项本身(集合视图项视图的控制器)中?或者可能是在自定义视图类中,尽管这有点奇怪

从集合视图的控制器中,可以使用
-itemAtIndex:
获取相关集合视图项

在collection视图项中,您只需使用
self
。但是,在这种情况下,绑定并不能给您带来太多好处。您最好只设置按钮的
目标
操作
,并对操作方法中的
representedObject
执行一些操作


如果您是从视图执行此操作,则需要一种方法来获取对集合视图项的引用。您应该在连接到NIB中集合视图项的视图上添加一个弱出口。然后,您可以使用该出口获取该
bind()的集合视图项
call.

这是一个自定义视图类,用作
NSCollectionViewItem
的原型。我的意思是只在鼠标位于特定位置时创建按钮。因此
itemAtIndex:
将不起作用。正如我所读到的,当新的
NSCollectionViewItem
被删除时,将不会复制到原型的预链接IBOutlet正在创建。这就是我最终将
NSCollectionView
子类化的原因。由于
NSCollectionViewItem
继承自
NSViewController
,它可以从NIB加载其视图。因此,您可以创建原型项(而不是视图)在具有集合视图的NIB中,只需在属性检查器上为其分配一个NIB名称。然后,您可以在单独的视图NIB中定义项视图。将该NIB文件的所有者的类设置为
NSCollectionViewItem
(如果使用自定义子类,则设置自定义子类)。然后,您可以设置一个插座和任何其他类型的连接,当每个实际项目和项目视图被实例化时,它们将被忠实地重新创建。我将接受这一点,作为您为此所付出的所有努力的答案。谢谢。
aButton!.bind(
    "argument",
    toObject: ???, // <- what should I set here?
    withKeyPath: "representedObject",
    options: options
)