• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> 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?