2012-07-14 66 views
2

我已通过valuePath绑定将NSImageView绑定到磁盘上的文件。当我向该位置写出新图像时,我想让NSImageView显示新图像。我怎样才能做到这一点?当磁盘上的映像更改时,如何获取NSImageView以进行刷新?

我一直在努力,该视图所绑定的对象上调用-didChangeValueForKey:-willChangeValueForKey:,并在对象上声明+keyPathsForValuesAffecting___方法,但我有一种感觉,这些基于志愿的方法不产生影响,因为图像的路径不会改变,只是其内容。

我还试图在更改发生后在图像视图上调用-setNeedsDisplay-updateCell:,但那也行不通。

更新

我之后我绑定的对象上改变了-imagePath属性(计算属性)来@""立即写入新图像之前,再回到正确的路径。这确实达到了预期的效果,但我希望在API中使用更正确的方法。这感觉就像一个黑客。

+0

NSImages做一些缓存。如果在文件更新时有权访问图像视图,是否有任何理由不能仅仅在视图上调用setImage:? – farski 2012-07-14 02:08:38

+0

如上所述,我不会调用'-setImage:',我在'valuePath'属性上使用绑定 – Dov 2012-07-14 02:13:38

+0

您是否尝试完全写入不同的值(如空字符串或伪造路径),然后立即恢复物业的原始价值? – 2012-07-14 07:06:26

回答

1

设置不同的值(空字符串@""),然后恢复原始值。

+0

感谢您的建议,但是,如上所述,我认为这更多的是解决方案而不是解决方法。 – Dov 2012-07-15 03:45:57

+0

此外,虽然这适用于'NSTableView',它不会为'NSCollectionView'做伎俩。在过去几年里有什么进展? – Dov 2014-04-30 00:19:25

-1

转到界面生成器中的文件检查器,并取消“使用自动布局”。

+1

问题是关于如何检测图像源的变化,而不是如何绘制/布局 – 2013-05-02 12:37:10

相关问题