【问题标题】:NSAlert beginSheetModalForWindow Not Showing AlertNSAlert beginSheetModalForWindow 未显示警报
【发布时间】:2016-04-03 04:29:00
【问题描述】:

我有一个显示为工作表的设置视图控制器。如果设置有效,它有一个按钮可以保存设置。如果设置有效,视图控制器将被关闭。如果它们无效,则用户会收到一条警报,说明设置无效。我的代码如下:

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 中没有收到任何错误。

请注意,这个问题是关于 OS X NOT iOS。

【问题讨论】:

    标签: swift macos cocoa nsalert


    【解决方案1】:

    它没有出现是因为你没有对 res 对象做任何事情! — 所以删除它:

            alert.beginSheetModalForWindow(window!, completionHandler: nil)
    

    NSAlert Class Reference

    【讨论】:

    • @user1822824:“它仍然不起作用”告诉我除了 显然做错了什么。我从最后一行删除了let res =,它对我来说非常好。
    • 我在 Xcode 中没有收到任何错误,但是单击按钮时不会显示警报。我终于能够通过对我的 NSAlert 代码进行一些修改来获得它。我将发布我修改后的代码作为答案。
    • 当然没有错误,因为代码按预期运行。 你有一个什么都不做的对象(正如我已经提到的),这在你的代码的最后一行很明显!
    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多