NSCollectionView,如何在双击上将代表对象发送到代码?

时间:2014-02-25 07:44:03

标签: click selected nscollectionview managedobjectcontext

我第一次在核心数据存储上使用绑定,在我的实体上有一对多关系,我使用显示图像和标题的NSCollectionView显示子项。

对象是:

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)

控件是:

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField

我已将NSImageView绑定到Collection View Item,模型键路径为representObject.imagePath和值转换器。这一切都运作良好。

我想要做的是检测代码中的项目双击,并获得对双击项目的representObject的访问权限。

我尝试子类化NSImageView并覆盖鼠标事件,因为单击事件有效但我无法从此处访问ManagedObject Context和所选对象。我不知道如何以正确的方式做到这一点。

感谢您的帮助,我理解这是基本的东西,我必须做一些不正确的绑定实现。

1 个答案:

答案 0 :(得分:1)

为您的集合视图项实现子类,比如CustomCollectionViewItem并更改IB中集合视图项的类。

也是NSImageView的子类,在这个类中处理双击。创建一个弱引用委托对象,并将此委托绑定到IB中的CustomCollectionViewItem。

现在,当您双击时,请委托调用CustomCollectionViewItem的任何方法,而在CustomCollectionViewItem中,您可以访问representObject。

现在,问题是如何进一步将其传递给实际的控制器类。您需要再次在CustomCollectionViewItem中创建一个弱引用委托,并将此委托绑定到IB中的主控制器类。

因此,当CustomCollectionViewItem从NSImageView子类接收调用时,则调用Main Controller类方法并传递representObject。