• Es gibt nach dem Softwareupdate eine Reihe von Änderungen und Neuerungen in unserem Forum. Genaueres dazu findet Ihr in dieser Ankündigung. Hinweise, Kritik, Anregungen, Lob und Tadel bitte hier diskutieren.

[Swift] Fensteranzahl limitieren

Verwirrter

Tokyo Rose
Mitglied seit
09.02.15
Beiträge
66
Hallo zusammen,
ich habe Mir einen Window Controller als Einstellungsfenster erstellt (in einem Storyboard versteht sich), welches mit einem Menü-Objekt verbunden ist. Leider kann ich das Menü-Objekt beispielsweise 10 Mal drücken und es öffnen sich auch 10 Fenster.

Wie kann ich die Anzahl der Fenster limitieren, sodass man nicht die Möglichkeit hat, 10 Fenster oder mehr zu öffnen, sondern lediglich 1?

Danke an alle :)
 

Verwirrter

Tokyo Rose
Mitglied seit
09.02.15
Beiträge
66
Es gibt so direkt keinen Code, da ich ich das Menü-Objekt mittels der control-Taste mit dem Window Controller verbunden habe. Das ganze war bisher also lediglich eine Sache im Storyboard.
 

KALLT

deaktivierter Benutzer
Mitglied seit
12.11.08
Beiträge
1.523
Ich nehme an, du hast dafür eine NSStorboardSegue vom Typ ’Show’ vom Menüeintrag auf das Fenster gezogen? Standard wird dann ein neues Fenster instanziert. Du kannst im NSWindowController das Attribut ‘Presentation’ auf ‘Single’ setzen, damit immer nur ein Fenster instanziert wird.
 

Verwirrter

Tokyo Rose
Mitglied seit
09.02.15
Beiträge
66
Ich nutze eine Storyboard-Reference, das hätte ich vielleicht erwähnen sollen ... Jedenfalls ändert das nicht direkt die Limitierung. Wie mache ich das ganze denn am besten, wenn ich eine Storyboard-Reference habe? Oder ist es in dem Fall vielleicht sinnvoller, das Menü-Objekt zu deaktivieren?

EDIT: Das ganze lässt sich einfach folgendermaßen lösen: Man klickt auf den Storyboard-Segue (den Strich zwischen Menü-Objekt und der Reference) und dann auf "Show the Attributes Inspector" in der rechten Leiste. Dort setzt man dann "Kind" auf "Modal".

Ich hoffe, dies ist eine "gültige" Lösung.

Danke und LG :)
 
Zuletzt bearbeitet:

KALLT

deaktivierter Benutzer
Mitglied seit
12.11.08
Beiträge
1.523
Ich würde den Segue-Typ nicht ändern. ‘Modal’ ist dafür nicht gedacht. Du kannst das schon an der Animation erkennen, denn ein Modal-Segue springt hervor, während ein Show-Segue nur eingeblendet wird. Besser wäre es wenn du dich an Apples Vorgaben hältst und nicht zwingend versuchst um das gewünschte Ergebnis durch derartige Umwege zu erreichen. Den Segue kannst du in der Unterklasse des ersten NSWindowController mit shouldPerformSegueWithIdentifier(identifier:sender:) konfigurieren.
 

Verwirrter

Tokyo Rose
Mitglied seit
09.02.15
Beiträge
66
Also wie meinst Du das jetzt? Das mit der Animation ist Mir auch aufgefallen, aber soll ich den Segue zur Reference wieder auf "Show" setzen?
So habe ich halt den Vorteil, dass das Menü-Objekt gleich mit deaktiviert wird, wenn das Fenster geöffnet wird und so die Fensteranzahl limitiert bleibt.
 

KALLT

deaktivierter Benutzer
Mitglied seit
12.11.08
Beiträge
1.523
So habe ich halt den Vorteil, dass das Menü-Objekt gleich mit deaktiviert wird, wenn das Fenster geöffnet wird und so die Fensteranzahl limitiert bleibt.
Es ist aber leider kein Standardverhalten bei Einstellungsfenstern. Ich persönlich möchte bei so etwas konsequent bleiben. Natürlich kannst du das trotzdem tun, aber es gibt eben auch andere Möglichkeiten. Anscheinend funktioniert die von mir beschriebene Methode nicht mit NSStoryboardReference, aber innerhalb eines NSStoryboard funktioniert es.
 

Verwirrter

Tokyo Rose
Mitglied seit
09.02.15
Beiträge
66
Aber einen konkreten Ansatz für die Version mit Reference hast Du nicht, oder etwa doch?