繁体   English   中英

NSCollectionViewItem具有自定义视图

[英]NSCollectionViewItem with a custom view

我一直在努力创建一个具有一组带有自定义视图的NSCollectionViewItems的NSCollectionView。 当项目视图上的控件是标准AppKit控件时,代码可以正常工作,但是一旦添加了自定义NSView,就无法从Interface Builder绑定它。

通过花一些时间搜索互联网,似乎有很多解决方案,但是似乎都是专门的。 是否有一些简单的示例代码演示在给定项目视图上的CustomImage *的情况下如何在该自定义视图上设置image属性?

提供每个项目数据的模型是:

@interface MyItem : NSObject
@property (retain, readwrite) NSImage * image;
@property (retain, readwrite) NSString * name;
@end

NSCollectionViewItem子类是:

@interface MyCollectionViewItem : NSCollectionViewItem

// Properties
@property (strong) IBOutlet NSTextField * name;
@property (strong) IBOutlet CustomImage * image;

@end

其中CustomImage只是NSImageView的子类。

我尝试子类化NSCollectionView并重写newItemForRepresentedObject作为一些建议的答案,并在那里分配:

MyItem * item = (MyItem *)object;
MyCollectionViewItem * newItem = (MyCollectionViewItem *)[super newItemForRepresentedObject:object];

NSView *view = [newItem view];
[view bind:@"name" toObject:item withKeyPath:@"name" options:nil];
[view bind:@"image" toObject:item withKeyPath:@"image" options:nil];
return newItem;

但这只是在bind调用中炸毁,错误是“名称”不存在。

从理论上讲,这应该是一件非常简单的事情,但是我发现的答案都没有清楚地说明这一点。 一种替代方法是抛弃NSCollectionView并在GitHub上使用更简单的替代方法之一,但我想最后尝试看看它是否首先可解决。

谢谢!

您如何将CustomImage实例添加到项目视图?

如果将“自定义视图”拖入其中然后更改类,则IB不会将其NSImageView

但是,如果您拖出NSImageView然后更改类,则IB仍应将其NSImageView并且应该能够NSImageView绑定其绑定。 在这种情况下,您可以将其Value绑定绑定到集合视图项,即模型键路径“ representedObject.image”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM