5 Stimmen

Die viewDidAppear-Methode des UIViewController wird nach dem Schließen eines Modals nicht aufgerufen.

Ein UIViewController (View A) ruft einen anderen View-Controller (View B) auf, indem es ihn als modale Steuerung aufruft.

[self presentModalViewController:ViewB animated:TRUE];

Und View B wird aufgerufen durch:

[self dismissModalViewControllerAnimated:TRUE];

Wenn dies geschieht, sieht alles richtig aus, AUSSER dass viewWillAppear und viewDidAppear von View A nicht aufgerufen werden (sie werden jedoch während der App-Initialisierung aufgerufen). Seltsam ist... ich glaube, ich habe das schon einmal gemacht, bin mir aber nicht sicher, was jetzt los ist.

Gibt es etwas offensichtlich falsch, was ich mache? Danke!

* AKTUALISIERUNG * Ich habe gerade erst erfahren, dass dieses Verhalten nur bei dem Übergangstyp UIModalTransitionStylePartialCurl auftritt. Bei allen anderen Übergangstypen erhält der übergeordnete View-Controller seine viewDidAppear-Nachricht ganz normal.

Was soll ich jetzt tun!?!

3voto

Erik Punkte 5669

Ich bin auf das gleiche Problem gestoßen.

Ich habe es gelöst, indem ich einen Delegierten und eine Delegiertenmethode hinzugefügt habe.

Also, wenn Controller A Controller B als ein modaler Ansichtscontroller mit einem Seiten-Curl öffnet, setze ich die Instanz von Controller B.delegate auf Controller A.

In Controller B füge ich dies hinzu:

-(void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    if (delegate)
        [delegate didCloseInfoViewController];
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X