2017-03-12 2 views
0

Ich bin neue MAC-Anwendungsentwicklung mit Swift. Ich habe einen NSViewController mit verschiedenen Menüoptionen.Swift Mac App -> Verschieben des Cursors schließt NSWindow

In dem, ich habe ein NSWindow bereits geöffnet und tippen Sie auf "Window" -Menüoption, ein anderes Fenster zu öffnen.

let passwordVC = PasswordViewController() 
     let pwdWindow = NSWindow(contentViewController: passwordVC) 
     pwdWindow.title = "Password" 
     pwdWindow.orderFront(self) 
     let controller = NSWindowController(window: pwdWindow) 

     controller.showWindow(self) 

aber es schließt sich automatisch, wenn ich den Cursor bewegen. Ich tue nichts, es bleibt. Ich bin mir nicht sicher, was das Problem ist. Freundlich helfen.

Antwort

0

Ich benutze so. Und es funktioniert für mich. Scheint ein alternativer Weg zu sein.

let passwordVC = PasswordViewController() 
     let pwdWindow = NSWindow(contentViewController: passwordVC) 
     pwdWindow.title = "Password" 
     let application = NSApplication.shared() 
     application.runModal(for: pwdWindow) 
+0

Ist dies eine Antwort oder ist dies eine Lösung für Ihr Problem oben? Es ist nicht klar. –

+0

bearbeitet Michael. Bitte prüfe. – Neela

0

Aus dem veröffentlichten Code geht Ihr Fenster aus dem Geltungsbereich, wodurch es zerstört wird. Versuchen Sie, das Fenster in einer höheren Bereichsvariablen zu behalten. Wie eine Klasseneigenschaft:

class Controller: NSViewController { 
    var pwdWindow: NSWindow! 
    override func viewDidLoad() { 
     pwdWindow = NSWindow(contentViewController: passwordVC) 
    } 
} 
+0

Danke für die Beantwortung. Aber ich bekomme diesen Buildfehler "Die Klassendeklaration kann den Wert" passwordVC ", der im Outer-Bereich definiert ist, nicht schließen." – Neela

+0

Ah, das ist implementierungsspezifisch. Ich bin mir nicht sicher, warum das passieren würde. Ich müsste den Code sehen, um herauszufinden, warum. – hola

Verwandte Themen