"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

delegate mit uinavigationcontroller und uipageviewcontroller

LTD 04.02.2017 - 00:08 2083 0
Posts

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
abend! da ich inzwischen mehrere stunden vergeblich versucht habe daten zwischen zwei viewcontrollern zu verschieben, hoffe ich, dass mir einer von euch helfen kann.

bis dato hatte ich 3 viewcontroller (vc1, vc2, vc3). der erste war in einem navigationcontroller embedded (mit einem navigationbaritem) und enthielt ein objekt "daten" der klasse "Nutzerdaten". das objekt habe ich zwischen den viewcontrollern dann so verschoben:

Code:
let newVC = storyboard?.instantiateViewController(withIdentifier: "vc1") as! VC1
            newVC.daten = datentonewvc
            newVC.delegate = self
            navigationController?.pushViewController(newVC, animated: true)

zurück gingen die daten dann per delegate:

Code:
override func willMove(toParentViewController parent: UIViewController?) {
        if let Daten: Nutzerdaten = daten{
        delegate.update(Datensatz: Daten)
        }
    }

das hat eigentlich immer super geklappt.

nun habe ich aber noch einen pageviewcontroller eingefügt um die ersten 2 viewcontroller "umblättern" zu können. diesen pageviewcontroller habe ich wiederum in einem navigationviewcontroller embedded. er ruft als erstes den vc1 auf. und genau hier liegt mein problem (oder meine probleme)

1. die navigationbar sichtbar im vc1 nutzt die klasse des pageviewcontroller und nicht die des vc1?!
2. ich kann vom vc1 kein delegate erstellen, weil er beim start kein objekt erzeugt - das heißt, der code oben erzeugt bei willMove eine fehlermeldung
3. mache ich im vc1 einen button zu vc2, kann ich per push zwar zu vc2 wechseln. habe ich im vc2 jedoch ein delegate zurück zu vc1, stürzt er mir beim "umblättern" von vc1 auf vc2 schon ab.

ich bin mir ziemlich sicher, dass das problem darin liegt, dass die navigationbar jetzt plötzlich nicht mehr beim vc1 startet. jedoch habe ich absolut keine ahnung, wie ich das behebe ... das rumprobieren mit self.delegate = vc1 oder ähnlichem hat auf jeden fall nichts gebracht.

vielen dank!

click to enlarge
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz