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代码进行一些修改,我终于能够得到它。我将发布我修改过的代码作为答案。当然没有错误,因为代码按预期运行。您有一个不做任何事情的对象(正如我已经提到的),这在代码的最后一行中非常明显!