我第一次在核心数据存储上使用绑定,在我的实体上有一对多关系,我使用显示图像和标题的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和所选对象。我不知道如何以正确的方式做到这一点。
感谢您的帮助,我理解这是基本的东西,我必须做一些不正确的绑定实现。
答案 0 :(得分:1)
为您的集合视图项实现子类,比如CustomCollectionViewItem并更改IB中集合视图项的类。
也是NSImageView的子类,在这个类中处理双击。创建一个弱引用委托对象,并将此委托绑定到IB中的CustomCollectionViewItem。
现在,当您双击时,请委托调用CustomCollectionViewItem的任何方法,而在CustomCollectionViewItem中,您可以访问representObject。
现在,问题是如何进一步将其传递给实际的控制器类。您需要再次在CustomCollectionViewItem中创建一个弱引用委托,并将此委托绑定到IB中的主控制器类。
因此,当CustomCollectionViewItem从NSImageView子类接收调用时,则调用Main Controller类方法并传递representObject。