Swift NSAlert BEGINSHEETMODALFOR窗口未显示警报

Swift NSAlert BEGINSHEETMODALFOR窗口未显示警报,swift,macos,cocoa,nsalert,Swift,Macos,Cocoa,Nsalert,我有一个作为图纸显示的设置视图控制器。它有一个按钮,用于保存有效的设置。如果设置有效,视图控制器将被解除。如果设置无效,用户将收到一条警告,说明设置无效。我的代码如下: var settingsValidated = false @IBAction func dismissSettings(sender: AnyObject) { if settingsValidated == true { dismissViewController(self) } el

我有一个作为图纸显示的设置视图控制器。它有一个按钮,用于保存有效的设置。如果设置有效,视图控制器将被解除。如果设置无效,用户将收到一条警告,说明设置无效。我的代码如下:

var settingsValidated = false

@IBAction func dismissSettings(sender: AnyObject) {

    if settingsValidated == true {

        dismissViewController(self)

    } else {

        let alert = NSAlert()
        alert.messageText = "Warning"
        alert.addButtonWithTitle("OK")
        alert.informativeText = "Your settings did not validate!"

        let window = NSApplication.sharedApplication().mainWindow
        let res = alert.beginSheetModalForWindow(window!, completionHandler: nil)

    }
}
如果将settingsValidated设置为true,则一切正常,但当我将settingsValidated设置为false时,不会发生任何事情。警报从未显示。我错过了什么?我在Xcode中没有收到任何错误


请注意,这个问题是关于OSX而不是iOS的。

它不会出现,因为您没有对
res
对象执行任何操作因此,请删除它:

        alert.beginSheetModalForWindow(window!, completionHandler: nil)

@user1822824:“它仍然不起作用”告诉我的只是你显然做错了什么。我从最后一行中删除了
let res=
,它对我来说工作得非常好。我在Xcode中没有收到任何错误,但单击按钮时不会显示警报。通过对我的NSAlert代码进行一些修改,我终于能够得到它。我将发布我修改过的代码作为答案。当然没有错误,因为代码按预期运行。您有一个不做任何事情的对象(正如我已经提到的),这在代码的最后一行中非常明显!