2012-03-08 11 views
6

Zajmuję się tworzeniem aplikacji, w której różne kontrolery viewcontrollers są wypychane na stos nawigacyjny po otrzymaniu zdalnego lub lokalnego powiadomienia.Przesyłanie ViewControllers do UINavigationController podczas animowanego przejścia ViewController

Problem pojawia się, gdy aplikacja jest aktywna i jeśli powiadomienie przychodzi pomiędzy animowaną zmianą viewcontroller. Ten bałagan w górę navigationcontroller i pojawia się następujący komunikat o błędzie:

zagnieżdżonych animacji pop może doprowadzić do uszkodzenia paska nawigacyjnego wykończeniowe się przejścia nawigacji w nieoczekiwany stan. Pasek nawigacji Drzewo widoku podrzędnego może zostać uszkodzone.

Czy jest jakiś sposób sprawdzenia, czy zmienne viewcontrollers się zmieniają, a jeśli tak, zaczekaj, aż przejście zostanie zakończone? A może istnieją inne metody rozwiązania tego problemu?

Jak zawsze, każda pomoc jest bardzo przydatna!

+1

Znalazłeś rozwiązanie? Mam ten sam problem - muszę podać kontroler widoku, gdy nadejdzie powiadomienie push. Mogę zlokalizować górny/widoczny kontroler widoku i pojawiać się na nim, ale jeśli ten kontroler widoku znajduje się w stanie animacji przejścia, aplikacja ulega awarii z "Próba rozpoczęcia przejścia modalnego z do podczas gdy przejście już trwa. " Żadna z właściwości UIViewController, takich jak isBeingDismissed, nie działa, ponieważ nie zwracają wartości, chyba że są używane z poziomu viewWillAppear –

Odpowiedz

4

Istnieje kilka metod uzyskiwania stanu kontrolki viewController. Takich jak: (BOOL)isBeingPresented i (BOOL)isViewLoaded. Chciałbym spojrzeć na apple doc's on ViewControllers.

także UINavigationController ma kilka metod, również takich jak:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
Powiązane problemy