Swift 在NSTouchBar内填充NSImageView

Swift 在NSTouchBar内填充NSImageView,swift,macos,macos-sierra,nstouchbar,Swift,Macos,Macos Sierra,Nstouchbar,我目前正在创建一个小的预览内的新的触摸栏。 我有一个带有拖放视图的窗口,可以通过它的URL接收图像。和一个IB触摸栏,触摸栏视图内有一个NSImageView。 这在myMainViewController中工作,以在窗口中显示图像: extension ViewController: DropDestinationViewDelegate { func processImageURLs(_ urls: [URL]) { for (_,url) in urls.enu

我目前正在创建一个小的预览内的新的触摸栏。 我有一个带有拖放视图的窗口,可以通过它的URL接收图像。和一个IB触摸栏,触摸栏视图内有一个NSImageView。

这在my
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
            }
        }
    }

}
正如您所看到的,我使用一个委托来侦听拖放事件以获取图像URL。现在我想使用image/URL在触摸栏中显示相同的图像。我用Interface Builder创建了触摸栏,并将图像url传递到
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
        }
    }
}
我通过
打印(URL)
收到正确的URL,但当我再次尝试创建图像时,应用程序因以下消息而崩溃:

fatal error: unexpectedly found nil while unwrapping an Optional value

我创建了一个包含修复的拉取请求

您的问题是,您正在创建一个新的WindowController,并将其用作参考,而不是使用NSWindow创建和使用的控制器

结果:


检查touchBarImageView是否为零。在加载控制器之前,您不是正在调用showImageInTouchBar吗?啊,很好的提示!谢谢
touchBarImageView
实际上是零。但是为什么呢?如果我在我的
MainViewController
中填充ImageView,我不必做任何事情。不抱歉,我正在调用
windowDidLoad()
之后的
showImageInTouchBar()
。您能用当前代码提交到单独的分支吗?当然,我已经用最新的方法(使用提交)创建了一个新的分支。如果您需要贡献,请随意创建拉取请求。;)