2011-07-28 13 views
5

Za każdym razem, gdy ręcznie otwieram kontroler widoku, viewWillAppear nie jest wywoływany na poprzednim UIViewController, który teraz się pojawia.Popping ViewController nie wywołuje viewWillAppear podczas cofania

Są to 2 regularne UIViewControllers. Moja konfiguracja aplikacji jest tak:

- UINavigationController 
    - UITabViewController with 5 UIViewControllers including UIViewControllerA 
     -UIViewControllerA (When I get back here, viewWillAppear doesnt get called) 
     -UIViewControllerB (I'm here, I want to pop to A) 

Próbowałem nazywając viewWillAppear ręcznie, ale to nie pomogło. Co może być nie tak? Moja ostatnia szansa to pojawienie się B i A, a następnie utworzenie nowego A i pchnięcie tego, ale to tylko w ostateczności (zakładam, że to zadziała?)

+0

jeśli jest to modal, wtedy viewwillappear nie zostanie wywołany. Tak właśnie jest architektura. Musisz utworzyć delegata w Modalu i zaimplementować go w nadrzędnym ViewController. Tak więc, gdy coś dzieje się w modelu viewcontroller, możesz wrócić do macierzystego ViewController. –

Odpowiedz

1

Nie zostanie wywołany, ponieważ widok jest wewnątrz kontrolera nawigacji, ale znalazłem rozwiązanie tutaj:

http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/

nadzieję, że pomoże.

+0

Czy jest możliwe ustawienie pierwszego kontrolera UIView na NIL, gdy jest on w stosie, a następnie ponowne przydzielenie go, gdy mam zamiar pobudzić bieżący kontroler UIViewController, aby powrócił? Po prostu chcę ponownie wywołać viewWillAppear. –

+0

@Hisoka Nie sądzę, że to zadziała, ustawienie zmiennej na zero nic nie da, ponieważ kontroler nawigacyjny ma odniesienie do niej i jej zachowanie. Nie jestem pewien, jak możesz zdobyć ten mehod, by znów zostać wezwanym. –

+1

Twoja odpowiedź tutaj jest nieprawidłowa. Jeśli wyświetlisz modal, a następnie odrzucisz modal, będziesz miał ponownie wywoływaną funkcję 'viewWillAppear:'. Uważam, że OP napotyka problem, który zauważa @Daniel Dickison poniżej. Nie chodzi o to, aby czytać w pamięci (to jest 'viewWillLoad'). Dezorientuje cię, który kontroler widoku jest odpowiedzialny za zagnieżdżanie kontrolerów widoku w nieparzystych zamówieniach. –

Powiązane problemy