Как правильно отобразить модальный вид из xib-файла в MacOS? - PullRequest
1 голос
/ 06 марта 2019

ОС: MacOS язык: Swift 4 +

Что я хочу

Я хочу показать простой пользовательский модальный вид из моего главного окна. Это пользовательское модальное представление я создал в отдельном файле .xib с принадлежащим классом NSWindowController.

В Xcode я добавил новый файл -> CocoaClass -> Подкласс NSWindowController -> Поставлен флажок "Также создать файл XIB для интерфейса пользователя"

Затем я добавил кнопку и сгенерировал обработчик действий, который просто печатает текст на консоли отладки. Это необходимо для проверки правильности обработки нажатия кнопки.

Чтобы показать модальное представление из моего главного окна, при нажатии кнопки выполняется следующий код:

let modal = SimpleModal(windowNibName: "SimpleModal")
        self.view.window?.beginSheet(modal.window!, completionHandler: { response in
            print("Finished device selection")
        })

Это показывает вид, но не как модальный вид. Он просто показывает вид рядом с моим главным окном, и модальный вид также не реагирует на события щелчка мыши, когда я нажимаю кнопку в модальном виде.

Я не знаю, как сделать это правильно, поэтому, если вы знаете, как это сделать, пожалуйста, ответьте мне.

ПРИМЕЧАНИЕ:

Когда появляется модальное представление, главное окно не должно отвечать на запросы, пока пользователь не отклонит модальное представление. Это похоже на перемещение фокуса из главного окна в модальный вид.

Источник моего демонстрационного проекта: OSXModalView

1 Ответ

1 голос
/ 06 марта 2019

Вы должны удалить флаг Visible At Launch в инспекторе атрибутов вашего оконного объекта в SimpleModal.xib.В противном случае ваш код работает.

...