如何解决如何初始化NSCollectionViewItem?
| 我正在尝试设置一个在单独的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类
我在那里找到的内容显示设置参考如下:
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,自您上次执行此操作以来可能已进行了一些更改... ???
,
我无法将视图链接回到Interface Builder中的NSCollectionViewItem子类。
您应将自定义视图中的元素绑定到文件所有者(其类别应为“ 5”)的对象。例如,您的图片视图将被绑定到文件的所有者,并且模型键路径为“ 6”。
是否可以使用NSCollectionViewItem的初始化方法来执行初始化操作?
NSCollectionViewItem
是NSViewController
的子类。这样,您可以覆盖ѭ9来执行自定义初始化。例如,
@implementation CollectionViewItem
…
- (void)loadView {
[super loadView];
self.someProperty = someDefaultValue;
}
…
@end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。