OSX Swift TabViewController via Button integriert/eingebetet anzeigen

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

  • OSX Swift TabViewController via Button integriert/eingebetet anzeigen

    Hallo,

    wie kann ich einen Tab View Controller mittels eines Buttons in vorgegebener Größe und Position anzeigen lassen? Konkret möchte ich - wenn der NSButton betätigt wird - dass der vorhandene VC welcher den Button enthält, durch den Tab View Controller (TVC) ersetzt/überlagert wird - ohne Animation - quasi dieser den Platz/Anzeigebereich des ursprünglichen ViewControllers einnimmt.

    Wenn ich im Storyboard für den Button ein Segue anlege (Button -> TVC), habe ich ja nur nachfolgend genannte Möglichkeiten:
    - Show
    - Modal
    - Sheet
    - Popover
    - Custom

    Was mir hier fehlt wäre quasi "EMBEDED" als Auswahl. Hoffe ich habe mein Anliegen einigermaßen gut beschrieben.

    Danke vorab mal für jeden hilfreichen Tipp.
  • Ganz dünnes Eis - weil noch nie gemacht - aber könntest Du nicht beide ViewController wechselweise als Child in einen Container-ViewController einbetten? Dann würde der Button aus VC A eine Methode in dem Container-VC (seinem Delegate) triggern, die ihn entfernt und VC B per addChild einbindet?

    Ähnlich wie es der UISplitViewController etc. macht. Es gibt von Apple eine Doku zu Child-VCs...

    Laut gedacht, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.

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

  • MyMattes schrieb:

    Ganz dünnes Eis - weil noch nie gemacht - aber könntest Du nicht beide ViewController wechselweise als Child in einen Container-ViewController einbetten? Dann würde der Button aus VC A eine Methode in dem Container-VC (seinem Delegate) triggern, die ihn entfernt und VC B per addChild einbindet?

    Ähnlich wie es der UISplitViewController etc. macht. Es gibt von Apple eine Doku zu Child-VCs...

    Laut gedacht, Mattes
    Prima, ein Ansatz den ich evaluiere.

    Danke Mattes
  • Anbei eine Lösung, welche ich nun im Einsatz habe:

    - im Storyboard weitere ViewController (Child-VC) anlegen und nicht vergessen jeweils eine StoryboardID zu vergeben
    - im parent-VC via addChild() den benötigten child-VC hinzufügen
    - (evt. Große und Poisition im View festlegen)
    - der child-VC wird durch transition() über den den parent-VC gelegt


    Einzig der Rücksprung via dismiss() funktioniert noch nicht, weil der jeweils hinzugefügte NSViewController mit der Methode dismiss() angesprochen wird - Achtung, dieser verwaltet sich jedoch nicht "eigenständig" - sondern wird in diesem Fall vom NSTabViewController "betreut". :rolleyes:

    Der NSViewController ist somit ein Teil (Item) des NSTabViewControllers und in sofern übernimmt der NSTabViewController auch die Verwaltung aller ihm zugeordneten/verknüpften NSViewController.

    Die Lösung ist also nicht den NSViewController zu verlassen, sondern den NSTabViewController. :D

    Nachtrag/Lösung:

    Quellcode

    1. @IBAction func actionDismiss(_ sender: NSButton)
    2. {
    3. parent?.dismiss(sender)
    4. }

    Viel Spaß hiermit. 8)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von OSXDev () aus folgendem Grund: Nachtrag/Lösung