NSButton绑定到NSCollectionViewItem:representObject?

时间:2015-06-05 07:40:16

标签: objective-c swift binding nsbutton nscollectionviewitem

当我在NSCollectionViewItem视图中预先添加一个按钮时,我可以在检查器中绑定它的动作:

enter image description here

哪个没有问题。

现在,我想在视图的mouseDown:中以编程方式创建该按钮,我应该为bind:选项分配什么,以获得与"相同的结果。绑定到:集合查看项目"在检查员?

这里是代码:( Swift)

aButton!.bind(
    "argument",
    toObject: ???, // <- what should I set here?
    withKeyPath: "representedObject",
    options: options
)

编辑:我能够通过继承 NSCollectionView 然后覆盖newItemForRepresentedObject:来将 representObject 分配给子类视图

还想知道是否有方法没有子类化 NSCollectionView

1 个答案:

答案 0 :(得分:1)

您应该绑定到拥有该按钮为后代的视图的NSCollectionViewItem实例。

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

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

从集合视图项中,您只需使用self。但是,在这种情况下,绑定并没有真正让你受益匪浅。您也可以设置按钮的targetaction,并对操作方法中的representedObject执行某些操作。

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