0
我有一个NSCollectionView
其中一个子视图是NSImageView
。实际的图像需要经过API调用后才从Web服务器加载(实际上是两个网络请求)。很明显,我需要异步加载图像。我可以将NSImageView
的值与NSValueTransformer
绑定,将模型ID转换为NSImage
,但是如何实现NSValueTransformer
?它预计立即从其transformedValue:
方法返回,而我只能在那里发出网络请求。我不想阻止使用同步网络的线程。NSCollectionView与网络图像
好的,当我创建子类时,是否给它自己的nib文件?或者我现在只使用收藏视图所在的笔尖?那么,我会重写什么方法来设置图像? setValue:forKeyPath:?我如何将绑定连接到子类?我是否必须在代码中完成所有工作?或者我可以使用界面构建器吗? – jsd
您有为每个集合视图项目定义的itemProtype。子类集合视图项目,它会自己选择你的itemprototype,即笔尖将采取的。在这个新的子类中创建一个NSImageView的IBOutlet。在loadView中调用[super loadView]并调用您的事务。一旦在你的回调方法中接收到数据,然后使用IBOutlet的setImage方法设置图像。子类仅用于处理异步调用,因此在“接口”构建器中,更改集合视图项的类。我希望你明白了。如果你愿意,我会添加一些代码。 –
我明白了。我不得不重写NSCollectionViewItem子类中的setRepresentedObject。另外请确保你参考视图强制它从笔尖加载,否则它可能是零售点。 – jsd