viewDidLoad wird aufgerufen, viewWillAppear wird nicht aufgerufen, die Ansicht erscheint nicht auf dem Bildschirm

7

Aktualisieren

Es wurde erwähnt, dass viewWillAppear und viewDidAppear nicht für die Dokumente aufgerufen werden. Ich führe jedoch innerhalb dieser Methoden keine Initialisierung durch und kehre keine Benutzeroberflächenelemente zur Ansicht hinzu.

Ich habe sie nur benutzt, um Breakpoints zu platzieren, um das zu debuggen.

Irgendwelche anderen Ideen?

Ursprüngliche Frage

Ich bin ratlos. Ich überarbeite Code und bin auf seltsames Verhalten gestoßen ....

Ich initialisiere ViewController A ohne eine Spitze und setze die Ansicht programmgesteuert.

viewDidLoad in Controller A wird aufgerufen.

Innerhalb viewDidLoad von viewController A, initialisiere ich ViewController B von einer Spitze.

Ich füge viewControllerB.view als Unteransicht von viewControllerA.view

hinzu

viewDidload von Controller B wird aufgerufen.

Dann wird es komisch:

  1. viewWillAppear und viewDidAppear von viewController B nie erhalten genannt.

  2. viewControllerB.view macht nie es auf dem Bildschirm.

  3. Nein Fehler.

Dinge, die ich überprüft habe:

Der Name der ViewControllerBs Nib ist korrekt.

Der View-Ausgang von viewControllerB ist mit einer View verbunden.

viewControllerB und seine Ansicht sind beide nicht-null.

Und um das Ganze abzurunden, funktioniert alles super in SDK [redigiert] Beta 5!

Irgendwelche Ideen? Es muss etwas albern sein ..

    
Corey Floyd 21.05.2009, 23:05
quelle

5 Antworten

0

Um die Sache zu schließen:

Ich könnte niemals eine Lösung finden, aber seither ist SDK 3.0 der Standard und der Punkt ist umstritten. Der Code funktioniert in aktuellen Versionen des SDK ordnungsgemäß.

    
Corey Floyd 24.08.2009, 23:11
quelle
19

Wenn der Ansichts-Controller einer Ansichtshierarchie durch Code hinzugefügt wird, erhält der Ansichts-Controller keine viewWillAppear (oder viewDidAppear ) Nachrichten. Wenn Sie es selbst hinzufügen, müssen Sie dem View-Controller die Nachricht selbst senden.

    
Ramin 22.05.2009 01:38
quelle
3

Vergessen Sie nicht,

anzurufen %Vor%

Wo immer Sie es neu definieren.

Die Dokumentation sagt:

  

Wenn Sie diese Methode überschreiben, müssen Sie zu einem bestimmten Zeitpunkt in Ihrer Implementierung Super aufrufen.

    
Antoine 13.01.2010 14:50
quelle
1

Versuchen Sie

%Vor%     
Jot 24.07.2009 23:50
quelle
0

Ich denke, Ihre Ansicht ist nicht die Grundansicht. Sie verwenden wahrscheinlich einen UINavigationController, versuchen Sie also, diese Methode zu implementieren

%Vor%

oder dieses

%Vor%

und fügen Sie in Ihrer Ansicht hinzuDidLoad

%Vor%

(Vergessen Sie nicht, das UINavigationControllerDelegate-Protokoll in Ihrer .h-Datei hinzuzufügen.

    
Med Hajlaoui 22.08.2012 13:06
quelle

Tags und Links