gpt4 book ai didi

objective-c - 将 valuePath 绑定(bind)到 NSImageView 会导致 NSImageView.image 在将新图像拖动到 imagewell 时返回 nil

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:21 25 4
gpt4 key购买 nike

我有一个 NSImageView 可以很好地作为图像运行。它也是通过绑定(bind)的。使用值路径属性显示每个记录的已保存图像的值转换器(值转换器只是附加文件路径——我只是将图像的文件名存储在数据库中)。

当我在没有值路径绑定(bind)(即用户尚未设置图像)的情况下将图像拖到图像上时,一切正常 - 在数据库中缩放和设置图像,然后显示图像。如果数据库中已经有图像显示通过。绑定(bind)将新图像拖到图像上会导致 NSImageView.image 返回 nil。 ImageView 本身不是零。

我通过在图像井上设置目标和 Action 来捕获图像井上的拖动图像。

    imageWell.target         = self
imageWell.action = "imageWellAction:"

当另一个图像已经绑定(bind)到 NSImageView 时,如何访问拖动的(新)图像?

最佳答案

我在 NSPasteboard 的深处花了很长时间和一个 NSImageView子类(试图完成 performDragOperation )。

问题是由 NSValueTransformer 引起的不知道如何处理 NSPasteboard 的 URL当它被绑定(bind)并且图像被放到它上面时正在传递给它。

最后解决这个问题的最简单方法是添加一个 NSImageView在 cocoa 绑定(bind)之上 NSImageView .最顶层的 ImageView 接受拖动操作,更新托管对象,然后清除其 .image 属性。底部 ImageView 注意到它绑定(bind)到的托管对象已更新,然后正确更新图像。

所以:

  • 顶部 ImageView 接受拖放然后自行清除
  • 底部(模糊) ImageView 是 cocoa 绑定(bind) ImageView ,仅用于显示,不接受拖放。

理想情况下我会是 NSValueTransformer ninja 并且知道如何反向转换丢弃的粘贴板 url(当存在绑定(bind)时它总是 nil),但在这种情况下我选择了实用主义。

关于objective-c - 将 valuePath 绑定(bind)到 NSImageView 会导致 NSImageView.image 在将新图像拖动到 imagewell 时返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com