Заполнение NSImageView внутри NSTouchBar

В настоящее время я создаю крошечное приложение с открытым исходным кодом для предварительного просмотра внутри новой сенсорной панели. У меня есть окно с перетаскиванием, чтобы получать изображения через его 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
            }
        }
    }

}

Как видите, я использую делегата для прослушивания событий drag n drop, чтобы получить URL изображения. Теперь я хочу использовать изображение /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 с print(url), но когда я снова пытаюсь создать образ, приложение вылетает со следующим сообщением:

fatal error: unexpectedly found nil while unwrapping an Optional value

1 ответ

Решение

Я создал запрос на удаление с исправлением.

Ваша проблема заключалась в том, что вы создавали новый WindowController и использовали его в качестве эталона вместо использования контроллера, созданного и используемого NSWindow.

Результат:

введите описание изображения здесь

Другие вопросы по тегам