像NSAlert

时间:2019-01-22 22:24:06

标签: swift macos modal-dialog

我正在编写一个应用程序,该应用程序将逐步处理大量数据,当它遇到特定条件时,我想显示一个自定义对话框,允许用户编辑一些数据信息。我已经尝试过使用模态定序。

但是,当我运行代码时,它将立即打开所有对话框。即使打开了“模式”对话框,它也会继续浏览数据。

示例:

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

这将显示10个窗口...它并不是真正的模式窗口。

我希望它像NSAlert一样工作,其中的执行将停止,直到关闭对话框为止。 NSAlert无法使用,因为我需要模态窗口上的教科书和其他控件。

有人对如何实现这一目标有任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用而不是presentAsModalWindow,

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

在SheetViewController中,您必须根据逻辑关闭modalWindow。

@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()
    }
}