MacOS Модальное диалоговое окно типа NSAlert - PullRequest
0 голосов
/ 23 января 2019

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

Однако, когда я запускаю код, он открывает все диалоговые окна одновременно. Он продолжает перебирать данные, даже если открыто «модальное» диалоговое окно.

Пример:

for x in 1...10 {
    print("X is: \(x)")
    self.presentAsModalWindow(sheetViewController)
}

Это покажет 10 окон ... это не действует по-настоящему модально.

Я бы хотел, чтобы он работал как NSAlert, где выполнение останавливается, пока диалог не закрывается. NSAlert не будет работать, потому что мне нужны учебники и другие элементы управления в модальном окне.

У кого-нибудь есть идеи, как этого добиться?

Заранее спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Вместо presentAsModalWindow, используйте

NSApp.runModal(for: NSPanel(contentViewController: sheetViewController))

И в вашем SheetViewController вы должны закрыть модальное окно в зависимости от логики.

@IBAction func buttonClicked(_ sender: NSButton) {

    if NSApp.modalWindow == self.view.window && NSApp.modalWindow!.isVisible {

        NSApp.stopModal() // Use .stopModal(withCode: .OK) if response has to be sent
        self.view.window?.close()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...