我目前正在创建一个微小的开源应用程序来预览一个新的触摸栏内部。我有一个拖放视图的窗口,可以通过它的URL接收图像。和一个IB触摸条与NSImageView在一个TouchBarView内。
这在我的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。现在,我想使用图像/URL在Touch Bar中显示相同的图像。我已经创建了带有接口生成器的Touch Bar,并将图像-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
}
}
}我正在使用print(url)接收正确的URL,但当我再次尝试创建该图像时,该应用程序将收到以下消息:
fatal error: unexpectedly found nil while unwrapping an Optional value发布于 2017-01-15 18:58:42
我用补丁创建了一个拉请求。
您的问题是,您正在创建一个新的WindowController,并使用它作为引用,而使用由NSWindow创建和使用的控制器。
结果:

https://stackoverflow.com/questions/41660017
复制相似问题