1

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

在此处输入图像描述

哪个工作没有问题。

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

这是代码:(斯威夫特)

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

编辑:我可以通过子类化 NSCollectionView然后覆盖newItemForRepresentedObject:代表对象分配给子类视图来做到这一点。

仍然想知道是否有没有子类化 NSCollectionView的方法。

4

1 回答 1

1

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

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

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

从集合视图项中,您只需使用self. 但是,在这种情况下,绑定并不能真正让您受益。您还不如只设置按钮的targetandaction并使用 action 方法执行某些representedObject操作。

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

于 2015-06-05T08:17:41.037 回答