2016-04-03 138 views
-2

我有一個設置視圖控制器顯示爲工作表。它有一個按鈕,可以在設置有效時保存設置。如果設置有效,視圖控制器將被解除。如果它們無效,用戶會收到一條警報,提示設置無效。我的代碼如下:NSAlert beginSheetModalForWindow不顯示警報

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假沒有任何反應。警報從不顯示。我錯過了什麼?我在Xcode中沒有收到任何錯誤。

請注意這個問題是關於OS X NOT iOS。

回答

0

它沒有出現,因爲你沒有對res對象做任何事情! - 因此將其刪除:

 alert.beginSheetModalForWindow(window!, completionHandler: nil) 

NSAlert Class Reference

+0

它仍然無法正常工作。 – user1822824

+0

@ user1822824:「它仍然不起作用」告訴我,除了*你*之外,沒有其他人明確地做錯了什麼。我從最後一行刪除了'let res =',它對我來說工作得很好。 –

+0

我在Xcode中沒有收到任何錯誤,但是單擊此按鈕時警告不會顯示。我終於能夠通過對我的NSAlert代碼進行一些修改來獲得它。我將發佈修改後的代碼作爲答案。 – user1822824