Die Methode didShowViewController von UINavigationControllerDelegate wurde zweimal aufgerufen

8
%Vor%

Dies ist der erste Controller meiner Demo und in der Konsole:

%Vor%

Der "didShowViewController" wurde zweimal aufgerufen. Ich bin mir nicht sicher, was los ist

----------------- ein Test ----------------------

Ich füge einige Log-in diese Methode des Controllers: loadView, viewDidLoad, viewWillAppear, viewDidAppear, und die Reihenfolge dieser Protokolle ist:

%Vor%     
belle tian 25.12.2015, 09:05
quelle

3 Antworten

1

Wenn Sie viewDidLoad(..) der Klasse UIViewController überschreiben, sollten Sie immer super.viewDidLoad() einfügen oder Sie erhalten unerwartetes Verhalten (z. B. wenn ein View-Controller zweimal angezeigt wird, wenn einmal erwartet wird).

Fügen Sie super.viewDidLoad() zu Ihrem override viewDidLoad(...) hinzu:

%Vor%

Zeigt Ihr Protokoll weiterhin, dass Ihr View-Controller zweimal angezeigt wird?

    
dfri 25.12.2015 10:33
quelle
0

UINavigationController hat zwei Instanzen von UIViewController

angezeigt

Aus dem UINavigationControllerDelegate Dokumentation

  

Wird aufgerufen, unmittelbar nachdem der Navigationscontroller eine Ansicht anzeigt   Eigenschaften des Controllers und der Navigationselemente.

Anstatt "showViewController" zu protokollieren, loggen Sie die UIViewController -Instanz ein, um zu sehen, was vor sich geht

%Vor%     
James Zaghini 25.12.2015 09:25
quelle
0

Ich habe das gleiche Problem in meinem Code getroffen. Ich konnte es umgehen, indem ich bis viewDidAppear wartete, um den Navigationsdelegaten zu setzen, anstatt ihn in viewDidLoad zu setzen. Um es in Ihr Beispiel zu übersetzen:

%Vor%     
wulong 01.02.2018 17:09
quelle