首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化NSCollectionViewItem?

如何初始化NSCollectionViewItem?
EN

Stack Overflow用户
提问于 2011-06-01 06:44:37
回答 2查看 2.7K关注 0票数 2

我正在尝试设置一个在各个NSCollectionViewItem视图中具有自定义绘图的NSCollectionView。我有一个需要在每个视图中绘制的图像,但我不能将该视图链接回界面生成器中的NSCollectionViewItem子类。有没有初始化方法可以和我的NSCollectionViewItem一起使用来执行初始化操作?我试图实现copyWithZone,但我做错了一些事情,因为我得到了一些永恒的循环。目前,我找到的与视图建立连接的唯一机会是在使用-(Void)setSelected:(BOOL)标志更改选择之后。我想在视图中绘制,但我需要representedObject中的图像作为我的源。我读到的所有与NSCollectionView相关的东西似乎都不完整。

代码语言:javascript
复制
@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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-01 07:32:26

我找到了这个文档- NSCollectionViewItem class

我在那里发现的设置引用如下所示:

代码语言:javascript
复制
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 

您的示例:-(空)setSelected:(BOOL)标志

我不懂这种语言,但是BOOL是id吗?

setRepresentedObject:

将接收器的表示对象设置为指定的模型对象。(在MacOSXv10.5到MacOSXv10.5中可用。)-(空)setRepresentedObject:(Id)对象参数

对象

接收方的模型对象。

可用性

在Mac OS X v10.5到Mac OS X v10.5中可用。

在NSCollectionView.h中声明

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

重要提示:在MacOSXv10.5中,NSCollectionViewItem类的超类是NSObject。在MacOSXv10.6和更高版本中,NSCollectionViewItem现在是NSViewController的子类。进行此更改是为了改进视图在NSCollectionView中的复制方式。NSCollectionViewItem仍然与以前的实现保持二进制兼容,并且正确地处理了未归档。

因此,如果您习惯于使用较旧的API,那么自上次使用此API以来,可能会有一些更改...?

票数 1
EN

Stack Overflow用户

发布于 2011-06-01 07:44:20

我无法将视图链接回接口生成器中的NSCollectionViewItem子类。

您应该将自定义视图中的元素绑定到文件的所有者(其类应该是CollectionViewItem)表示的对象。例如,您的图像视图将绑定到文件的所有者,其模型密钥路径为representedObject.imageSource

有没有初始化方法可以用于我的NSCollectionViewItem来执行初始化操作?

NSCollectionViewItemNSViewController的一个子类。因此,您可以覆盖-loadView来执行自定义初始化。例如,

代码语言:javascript
复制
@implementation CollectionViewItem
…
- (void)loadView {
    [super loadView];
    self.someProperty = someDefaultValue;
}
…
@end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6194395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档