2017-07-03 5 views
0

Je souhaite empêcher l'utilisateur de fermer la fenêtre principale (et de quitter l'application) pendant l'exécution d'un compte à rebours. J'ai lu des articles à ce sujet mais malheureusement, aucune des méthodes expliquées ne fonctionnera. Je pense que je fais la bonne chose mais windowShouldClose n'est jamais appelé contrairement aux deux autres fonctions. Je suis désespérée. :) Voici mon code dans le NSWindowController:windowShouldClose (_ :) jamais appelé

import Cocoa 

class WindowController: NSWindowController, NSWindowDelegate { 

override func windowDidLoad() { 
    super.windowDidLoad() 
    print("Window did load") 
    self.window?.delegate = self 
} 

func windowShouldClose(sender: NSWindow) -> Bool { 
    print("Window should close") 
    let alert = NSAlert.init() 
    alert.addButton(withTitle: "No") 
    alert.addButton(withTitle: "Yes") 
    alert.informativeText = "Close the window?" 
    let response = alert.runModal() 
    if response == NSAlertFirstButtonReturn { 
     return true 
    } else { 
     return false 
    } 
} 

func windowWillClose(_ notification: Notification) { 
    print("Window will close") 
} 

func windowDidChangeScreen(_ notification: Notification) { 
    print("Window did change screen") 
} 

} 

Répondre

0

windowShouldClose(_:) est jamais appelé parce que vous avez déclaré comme windowShouldClose(:)

Swift 3 la signature du delegate method est

func windowShouldClose(_ sender: NSWindow) -> Bool 
+0

Merci une lot! Vous êtes mon sauveur! :) – PhiGoLu