当我在NSCollectionViewItem视图中预先添加一个按钮时,我可以在检查器中绑定它的动作:
哪个没有问题。
现在,我想在视图的mouseDown:
中以编程方式创建该按钮,我应该为bind:
选项分配什么,以获得与"相同的结果。绑定到:集合查看项目"在检查员?
这里是代码:( Swift)
aButton!.bind(
"argument",
toObject: ???, // <- what should I set here?
withKeyPath: "representedObject",
options: options
)
编辑:我能够通过继承 NSCollectionView 然后覆盖newItemForRepresentedObject:
来将 representObject 分配给子类视图
还想知道是否有方法没有子类化 NSCollectionView 。
答案 0 :(得分:1)
您应该绑定到拥有该按钮为后代的视图的NSCollectionViewItem
实例。
您从哪个上下文创建按钮并尝试绑定它?这是集合视图的控制器吗?或者它是集合视图项本身(它是集合视图项视图的控制器)?或者它可能在自定义视图类中,尽管这有点奇怪。
从集合视图的控制器中,您可以使用-itemAtIndex:
获取相关的集合视图项。
从集合视图项中,您只需使用self
。但是,在这种情况下,绑定并没有真正让你受益匪浅。您也可以设置按钮的target
和action
,并对操作方法中的representedObject
执行某些操作。
如果您从视图中执行此操作,则需要一种方法来获取对集合视图项的引用。您应该在视图上添加一个弱插座,您连接到NIB中的集合视图项。然后,您将使用该出口获取该bind()
电话的集合视图项。