2016-05-28 15 views
0

Ich verband eine Menu-Object mit einer Window Controller. Zum Aufruf der Window Controller habe ich eine Verknüpfung hinzugefügt. Wenn Sie die Verknüpfung mehrmals drücken, werden mehrere Fenster geöffnet. Wie man eine Funktion aufruft, die die Anzahl der Fenster zählt, und wenn es 0 ist, wird es die Window Controller öffnen, auf die Abkürzung drücken?Wie erlaubt man nur ein Fenster in der GUI in Swift

Ich benutze Swift als Programmiersprache.

Antwort

0

Sie könnten eine statische Variable haben, die bei erfolgreicher Initialisierung Ihrer Ansicht und den Dekrementen auf der Deinit der Ansicht inkrementiert wird. Sie können dann den Wert in einer Guard-Anweisung vor der Initialisierung überprüfen oder die Menüverfügbarkeit basierend auf dieser Variablen festlegen.

class WindowController: NSWindowController { 
    static var count = 0 

    override func windowDidLoad() { 
    WindowController.count += 1 
    } 

    deinit { 
    WindowController.count -= 1 
    } 
} 

func createWindow() { 
    guard WindowController.count = 0 else { return } 
    // Create window here 
} 
+0

Entschuldigung, ich konnte Ihnen nicht folgen ... Wo fügen Sie die Variable hinzu und wie überprüfen Sie sie? – HelloToYou

+0

Eine einfachere Methode ist das Hinzufügen der statischen Variablen zum WindowController und dann in der Funktion, die das Menü zum Laden des Menüs aufruft, können Sie überprüfen, ob die Variable 0 ist. In der Unterklasse können Sie die statische Variable erhöhen WindowDidLoad und Dekrement in Deinit oder WindowWillClose. –

+0

Könnte einen Beispielcode erstellen? Ich bin neu bei Swift, daher verwirren mich einige Begriffe. Also ... Wo sollte ich die Variable erstellen? Und dann, nach dem Erstellen muss ich das 'Menu-Objekt' mit der' viewDidLoad() '-Funktion verbinden und dort muss ich prüfen, ob die Variable 0 ist? Oder was bedeutet das? Zum Schluss könnte mir ein Beispiel wirklich helfen :) – HelloToYou