macos - 具有自定义 View 的 NSCollectionViewItem

标签 macos cocoa nscollectionview nscollectionviewitem

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

花了几个小时在互联网上搜索,似乎有很多选项可以解决这个问题,但似乎都很专业。是否有一些简单的示例代码演示了如何在项目 View 上给定 CustomImage * 的情况下在该自定义 View 上设置图像属性?

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

@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 实例添加到项目 View 中?

如果您拖入“自定义 View ”,然后更改类,IB 不会将其视为 NSImageView

但是,如果您拖出一个 NSImageView 然后更改类,IB 仍应将其视为 NSImageView 并且您应该能够像平常一样绑定(bind)其绑定(bind)。在这种情况下,您可以将其 Value 绑定(bind)绑定(bind)到 Collection View 项,模型键路径“representedObject.image”。

关于macos - 具有自定义 View 的 NSCollectionViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219476/

相关文章:

macos - Mathematica 找不到 SerialIO 包

javascript - 如何将数组argu从object_c转换为javascript?

swift - NSCollectionViewItem 在 itemForRepresentedObjectAtIndexPath 中没有导出

objective-c - 全宽 NSCollectionViewFlowLayout 与 NSCollectionView

ios - Collection View 布局自身大小不起作用

ruby-on-rails - 编码::UndefinedConversionError "\xE7"从 ASCII-8BIT 到 UTF-8

swift - Swift Mac 和 CloudKit 上的问题,应用程序运行后立即崩溃

cocoa - 在 Xcode 框架中公开 header

ios - 扫描特定 CBUUID 时,Core Bluetooth 未找到外围设备

excel - 我必须多次运行我的代码才能完全执行