我目前正在创建一个小open source app来预览新触控栏内部。 我有一个带有拖放视图的窗口,可以通过它的URL接收图像。还有一个带TouchSarView内部NSImageView的IB Touch Bar interface builder structure (screenshot)
这可以在我的src/main/resources/config/liquibase/changelog
中显示窗口中的图像:
src/main/resources/config/liquibase/master.xml
正如您所看到的,我使用委托来监听拖放事件以获取图像URL。现在我想使用图像/ URL在触摸栏内显示相同的图像。我已经使用Interface Builder创建了触控栏,并且我已将图片网址传递给MainViewController
。
在我的extension ViewController: DropDestinationViewDelegate {
func processImageURLs(_ urls: [URL]) {
for (_,url) in urls.enumerated() {
// pass URL to Window Controller
let windowController = WindowController()
windowController.showImageInTouchBar(url)
// create the image from the content URL
if let image = NSImage(contentsOf:url) {
imagePreviewView.image = image
}
}
}
}
中,我尝试像这样处理图像:
WindowController
我收到了WindowController
的正确网址,但是当我尝试再次创建图片时,该应用程序崩溃并显示以下消息:
class WindowController: NSWindowController {
@IBOutlet var touchBarImageView: NSImageView!
override func windowDidLoad() {
super.windowDidLoad()
}
func showImageInTouchBar(_ url: URL) {
print(url)
if let touchbarImage = NSImage(contentsOf:url) {
touchBarImageView.image = touchbarImage
}
}
}