当磁盘上的映像发生变化时,如何让NSImageView刷新?

时间:2012-07-14 01:52:09

标签: objective-c macos cocoa cocoa-bindings nsimage

我通过NSImageView绑定将valuePath绑定到磁盘上的文件。当我向该位置写出新图像时,我希望NSImageView显示新图像。我怎么能做到这一点?

我尝试在视图绑定的对象上调用-didChangeValueForKey:-willChangeValueForKey:,并在对象上声明+keyPathsForValuesAffecting___方法,但我感觉这些KVO-基于方法没有影响,因为图像的路径不会改变,只是其内容。

我还尝试在更改发生后在图片视图上调用-setNeedsDisplay-updateCell:,但这也不起作用。

更新

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

请确保needsDisplay = true是执行此操作的正确方法,但是您还必须在主线程上运行,否则更改不会发生。

答案 2 :(得分:-1)

转到界面构建器中的“文件”检查器,然后取消选中“使用自动布局”。