Werte übergeben an zweiten viewcontroller nach Änderung

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

  • Werte übergeben an zweiten viewcontroller nach Änderung

    Moin moin,
    ich hätte da gern mal ein Problem. :)

    Ich habe einen TabViewcontroller in mein Hauptfenster eingebunden.
    Nun sollen Werte aus dem Hauptfenster in die entsprechneden Tabviews übertagen werden.
    Den Wert der Variablen zeigt der Tab auch an. Die Variable ändert sich jedoch wenn ich einen Eintag in das Text Field mache.
    Diese Änderung wird dann jedoch nicht mehr angezeigt.
    Die Anzeige dient nur zur Kontrolle. Ich brauche letztendlich nur den Wert der Variablen um sie weiter zu verwenden.
  • Joey6810 schrieb:


    Den Wert der Variablen zeigt der Tab auch an. Die Variable ändert sich jedoch wenn ich einen Eintag in das Text Field mache.
    Diese Änderung wird dann jedoch nicht mehr angezeigt.
    Ich bin nicht sicher, Dein Problem verstanden zu haben, etwas Code oder eine detailliertere Beschreibung, wie Du die ViewController "verbunden" hast, wäre hilfreich. Um eine Variablen-Übergabe für ViewController zu realisieren, würde ich in den empfangenden Controllern Properties definieren, die dann z. B. in prepareForSegue: gesetzt würden. Hier könnte man auch Objekte des abgebenden Controller referenzieren, so dass Eigenschaften von diesen gesetzt werden können, wenn man Werte ändert.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Upps,
    sorry der Code ist nnicht mitgekommen.

    Quellcode: Test_07.txt

    1. import Cocoa
    2. class Hauptfenster: NSViewController {
    3. @IBOutlet weak var Auftragsnummer: NSTextField!
    4. @IBOutlet weak var AuftragsnummerAnsicht: NSTextField!
    5. var auftragsnummer = "9024711"
    6. var seite1controller: Seite1?
    7. var seite2controller: Seite2?
    8. @IBAction func ChangeAuftragsnummer(_ sender: NSTextField)
    9. {
    10. auftragsnummer = Auftragsnummer.stringValue
    11. }
    12. override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    13. guard let second = segue.destinationController as? NSTabViewController else {return}
    14. for controller in second.children
    15. {
    16. if let controller = controller as? Seite1
    17. {
    18. seite1controller = controller
    19. seite1controller?.ausgabe1 = auftragsnummer
    20. }
    21. }
    22. }
    23. }
    Alles anzeigen
  • Und ich verstehe es so, dass Auftragsnummer im Hauptfenster über ein NSTextField geändert wird und ChangeAuftragnummer (merkwürdige Grossschreibung) sollte dann ein Property des zweiten ViewControllers ändern?

    Bedenke, dass prepareForSegue: nach der Anzeige des 2. ViewControllers nicht mehr aufgerufen wird. Du müsstest dort also eine Verknüpfung zwischen den beiden ViewControllern schaffen, die Du auch nach Durchführung der Segue noch verwenden kannst. Ich würde zum Beispiel eine eigene Objektklasse erstellen, die einen Auftrag abbildet. Diese hat ein Property Auftragsnummer und wird beim Anlegen eines Auftrages instanziert. Dann übergeben ich eine Referenz dieses Auftrags-Objektes von einem zum anderen ViewController und beide können nach Bedarf Eigenschaften lesen bzw. schreiben. Dies wäre ein erster Schritt Richtung MVC, den Du eh beherzigen solltest...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.