• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

[Swift] Fensteranzahl limitieren

Gelöschtes Mitglied 198738

Gast
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 :)
 
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.
 
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.
 
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 von einem Moderator:
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.
 
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.
 
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.
 
Aber einen konkreten Ansatz für die Version mit Reference hast Du nicht, oder etwa doch?