我觉得这是一项简单的任务,但我似乎无法让它发挥作用。我正在尝试使用带有自定义项目的 NSCollectionView。我在项目的自定义视图中添加了另一个 NSImageView,并将此视图子类化以添加连接到此附加 NSImageView 的自定义插座。
现在我重写- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object
了,因为有时我需要删除这个 NSImageView。
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {
CustomItem *theItem = (CustomItem *)[super newItemForRepresentedObject: object];
...
if (I need to remove that NSImageView) {
[[theItem additionalImageView] removeFromSuperview];
}
return theItem;
}
无论如何,additionalImageView 似乎是(nil)
. 这在某种程度上是显而易见的,因为 super 方法将返回没有自定义插座的默认 NSCollectionViewItem。
在这里做的最好的事情是什么?我读了一些关于该copy
方法的内容,并尝试了:
- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object {
CustomItem *theItem = [(CustomItem *)[super itemPrototype] copy]; // Here is the change
...
if (I need to remove that NSImageView) {
[[theItem additionalImageView] removeFromSuperview];
}
return theItem;
}
但这行不通。那么,有没有办法在使用自定义 NSCollectionViewItem 时保留自定义插座?
任何帮助将不胜感激。谢谢!