我正在尝试设置一个在单独的NSCollectionViewItem视图中具有自定义绘图的NSCollectionView。我有一个需要在每个视图中绘制的图像,但是无法将视图链接回到Interface Builder中的NSCollectionViewItem子类。是否可以使用NSCollectionViewItem的初始化方法来执行初始化操作?我尝试实现copyWithZone,但是由于做一些永恒的循环,所以做错了。当前,我发现与视图建立连接的唯一机会是使用-(void)setSelected:(BOOL)标志更改选择之后。我想在视图中绘制图形,但是我需要来自我的presentatedObject的图像作为源。我阅读的所有与NSCollectionView相关的内容似乎都不完整。

@implementation CollectionViewItem
    -(void)setSelected:(BOOL)flag {
        [super setSelected:flag];
        NSLog(@"setSelected: %d", flag);
        // tell the view that it has been selected
        [(CollectionViewItemView* )[self view] setSelected:flag];
        // This is where I pass my image to my view
        [(CollectionViewItemView* )[self view] setOriginalSprite:[(MyModel* )self.representedObject imageSource]];
        [(CollectionViewItemView* )[self view] setNeedsDisplay:YES];
    }
@end

最佳答案

我找到了此文档-NSCollectionViewItem class

我在那里找到的内容显示设置参考的方式如下:

Setting the Represented Object

    – representedObject Available in Mac OS X v10.5 through Mac OS X v10.5
    – setRepresentedObject: Available in Mac OS X v10.5 through Mac OS X v10.5


您的样本:
    -(void)setSelected:(BOOL)标志

我不知道该语言,但是BOOL是一个ID吗?


  setRepresentedObject:
  
  设置接收者的代表对象
  到指定的模型对象。
  (在Mac OS X v10.5中通过
  Mac OS X v10.5。)
  -(无效)setRepresentedObject:(id)对象
  参量
  
  宾语

The receiver’s model object.

  
  可用性

Available in Mac OS X v10.5 through Mac OS X v10.5.

  
  在NSCollectionView.h中声明


注意:我确实在文档中看到了这一点:

重要说明:在Mac OS X v10.5中,NSCollectionViewItem类的超类是NSObject。在Mac OS X v10.6和更高版本中,NSCollectionViewItem现在是NSViewController的子类。进行此更改是为了改善在NSCollectionView中复制视图的方式。 NSCollectionViewItem仍与先前的实现二进制兼容,并且已正确处理了取消存档。

因此,如果您习惯使用较旧的API,自您上次执行此操作以来可能已进行了一些更改... ???

10-01 16:00