OSX / Swift / NSViewController / Größe überschreitet die Größe des Windows

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • OSX / Swift / NSViewController / Größe überschreitet die Größe des Windows

    Hallo Zusammen,

    ich wurde auf nachfolgendes Phänomen aufmerksam als ich testweise von einem Menüpunkt einen weiteren NSViewController (via Programmcode) aufgerufen habe.

    Wenn ein neues Projekt (App / Swift / Storyboard) angelegt wird, enthält es folgende Bestandteile:
    - Menüleiste
    - Window
    - Connect (Segue) zwischen Window und ViewController
    - NSViewController

    Nachfolgende Erweiterungen wurden vorgenommen:
    - Menü / wurde um einen Item erweitert
    - Windows / Einstellungen für den Content Size / Full Screen Size wurden vorgenommen und Min bzw. Max mit einem Häckchen versehen

    Wird nun die App mit den obigen Änderungen gestartet orientiert sich die Größe des ViewControllers (via Segue verbunden) an den Einstellungen der im Window hinterlegten Größenangaben und kann auch nicht während des Betriebes in der Größe geändert werden.

    Soweit, so gut - ist ja durch die Einstellungen so auch gewollt.

    Das neu hinzugefügte MenuItem ruft nun einen weiteren NSViewController mit der Methode presentAsSheet() auf - also ohne im Storyboard ein Segue eingefügen zu haben.
    Nun erhalte ich folgendes Phänomen; dieser ViewController orientiert sich nicht an den im Window hinterlegten Größenangaben. Der User hat die Möglichkeit diesen in allen Richtungen zu vergrößern bzw. zu verkleinern.
    Nun meine Frage hierzu: Was habe ich hier nicht beachtet? Wie kann ich verhindern, dass der über ein MenuItem erzeugte ViewController in seiner Größe veränderbar ist - ich möchte dies schlicht und ergreifend unterbinden.

    Kurzer Hintergrund zu diesem Punkt: Die App zeigt sehr wichtige Realtime-Diagnosedaten an, welche nicht aus Versehen durch eine Veränderung der VC-Größe - durch den User - kurzzeitig unterbrochen werden darf.

    Vielen Dank an dieser Stelle vorab.
  • OSXDev schrieb:

    Das neu hinzugefügte MenuItem ruft nun einen weiteren NSViewController mit der Methode presentAsSheet() auf - also ohne im Storyboard ein Segue eingefügen zu haben.
    Moin!

    Ganz naiv gefragt, aber hast Du denn für diesen (neu erzeugten) NSViewController eine Größe vorgegeben - und wie? Ich denke da z. B. an Constraints der entsprechenden NSView im Storyboard (falls verwendet), oder durch ein explizites Setzen in der willRezize-Method des NSWindowDelegate.

    Sorry, dass so unspezifisch, aber es gibt ja diverse Möglichkeiten... Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    OSXDev schrieb:

    Das neu hinzugefügte MenuItem ruft nun einen weiteren NSViewController mit der Methode presentAsSheet() auf - also ohne im Storyboard ein Segue eingefügen zu haben.
    Moin!
    Ganz naiv gefragt, aber hast Du denn für diesen (neu erzeugten) NSViewController eine Größe vorgegeben - und wie? Ich denke da z. B. an Constraints der entsprechenden NSView im Storyboard (falls verwendet), oder durch ein explizites Setzen in der willRezize-Method des NSWindowDelegate.

    Sorry, dass so unspezifisch, aber es gibt ja diverse Möglichkeiten... Mattes
    Moin Mattes,
    durch setzten der Constraints konnte ich das Problem leider nicht lösen. Hätte ich vielleicht in obiger Ausführung ebenfalls mitteilen können. :rolleyes:
    Das explizite setzen der Größen hat ebenfalls nicht funktioniert. Hierzu müsste ich den VC mit presentViewControllerAsModalWindow() aufrufen. Wäre eine Möglichkeit :thumbup: .

    Danke für die zügige Antwort.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von OSXDev ()