iOS: isMovingToParentViewController funktioniert nicht wie erwartet

9

Mein Setup ist einfach und mein Problem unterscheidet sich nicht sehr von dieser . Um es jedoch besser zu erklären, habe ich es hier gepostet:

%Vor%

VC1 ist der Root-View-Controller von NavController. VC2 ist über den Push-Übergang von VC1 zugänglich.

Ich möchte in VC1 feststellen, ob:

Es erschien direkt als Root-View-Controller (über Push) Es erschien als ein Ergebnis von VC2 gepoppt

Ich lese die Dokumente, die folgendes sagen, sollte mir sagen, ob später wahr ist.

%Vor%

Das ist jedoch nicht der Fall und die obige Bedingung stellt sich IMMER als WAHR heraus. Das bedeutet, dass (self.isMovingToParentViewController == NO) immer passiert.

Hier ist mein Code:

%Vor%

Dasselbe gilt für viewDidAppear.

Für eine Frage der Tatsache, ich setze Haltepunkt am Anfang, und überprüft, dass alle folgenden sind in beiden Fällen FALSE:

%Vor%

Was passiert? Gibt es irgendetwas, das ich in meinem Storyboard verpatzt habe? Bitte helfen ...

    
Nirav Bhatt 24.04.2014, 15:10
quelle

3 Antworten

12

Leider ist isMovingToParentViewController für den root-View-Controller nicht wahr, daher behandle ich diese Situation normalerweise mit einem BOOL,

%Vor%     
rdelmar 24.04.2014, 15:36
quelle
3

Da isMovingToParentViewController nur dann gesetzt wird, wenn ein viewController an den Navigations-Stack gesendet wird und nicht für den ursprünglichen rootViewController, würde ich Folgendes vorschlagen:

%Vor%     
David Berry 24.04.2014 15:33
quelle
3

Eine einfache Lösung ist das Hinzufügen eines Flags auf viewWillDisappear , das auf YES gesetzt wird, wenn der VC1 verschwunden ist. Sonst war die Ansicht nie verschwunden, also ist es der erste Push ( RootViewController von Navigation Controller ).

Beispielcode

%Vor%     
EridB 24.04.2014 15:35
quelle