在NSTouchBar中填充NSImageView

时间:2017-01-15 10:17:22

标签: swift macos macos-sierra nstouchbar

我目前正在创建一个小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
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我创建了一个带有修复的拉取请求。

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

结果:

enter image description here