5

nie byłem szczęśliwy z poszukiwania tego, więc jedziemy;)popViewController/viewWillAppear bierne w iOS 5

mam UIViewController ze zwyczajem UINavigationBar który popycha kolejne UIViewController jako podrzędny.

Wszystko działa poprawnie, z wyjątkiem sytuacji, gdy kliknę przycisk powrotu na w wywiadzie. Widok podglądu (pierwszy) jest wyświetlany poprawnie, ale nie jest animowany. Animacja UINavigationBar jest poprawna, tylko widoki przełączają się natychmiast.

Funkcja - (void)viewWillAppear:(BOOL)animated pierwszego UIViewController zostaje wywołana z NO dla animated. Dzieje się tak tylko wtedy, gdy testuję z iOS 5, a nie z iOS 4.

Czy ktoś wie, jak to naprawić?

Dzięki za pomoc! Hannes

UPDATE 1

Właśnie usunięto wszystkie niestandardowego kodu i po prostu stosować równinie UINavigationBar (a więc bez dodatkowych ustawień) i nadal nie działa z iOS 5. To jest mój kod używam w pierwszy ViewController wcisnąć drugą ViewController:

[self.navigationController pushViewController:secondViewController animated:YES];

Jak już wspomniano - po kliknięciu przycisku wstecz na pasku nawigacyjnym na drugim zdaniem pierwszy widok pojawia się natychmiast, bez animacji.

Każda pomoc zostanie doceniona! Dzięki!

UPDATE 2

czuję, że jestem coraz bliżej tej kwestii, ale nadal nie ma rozwiązania:

Właśnie dodałem zwyczaj UINavigationController gdzie wystarczy zadzwonić [super popViewControllerAnimated:animated]. (Jest animowana TAK) to get nazywane poprawnie ale viewWillAppear pierwszego UIViewController dostaje NO jako wartości dla animowane ...

Odpowiedz

6

miałem podobny problem dzisiaj gdzie UIViewController trafiało NO w viewWillAppear, z wyjątkiem standardowego UINavigationBar i UINavigationController.

Okazało się, że jest to spowodowane ręcznym wywołaniem viewWillAppear:YES gdzieś, gdzie nie powinno być. This item sugeruje, że może to być również spowodowane wywołaniem niewłaściwej metody super (np.[super viewWillAppear:animated] zamiast [super viewDidAppear:animated] wewnątrz viewDidAppear).

chodzi o użyciu niestandardowego UINavigationBar, natknąłem ten link dzisiaj, że może pomóc w przypadku: http://sloshire1.posterous.com/simple-fix-for-viewwillappear-in-ios5

+2

o mój Boże, dzięki sooomuch !! Oszalałem z tym! Właśnie odkryłem, że istnieje '[super viewWillAppear]' w 'viewDidAppear' mojego niestandardowego' UITabBarController'. Dzięki jeszcze raz! – Hannes

+0

@Hannes dzięki to działa dla mnie @Hannes używasz 'Rumex CustomTabbar (RXCustom Tabbar)' Właśnie ukryłem '[super viewWppAppear]' w viewDidAppear mojego niestandardowego UITabBarController. czy to stwarza jakiś problem? co było z tym problemem? –

+0

@Hannes otwieram 'present modal viewcontroller' w tym czasie otrzymuję ten sam problem. masz jakiś pomysł? –

0

Jabłko wdrożone oficjalne sposoby tworzenia niestandardowych pasków nawigacyjnych w iOS 5. Niestety, również złamał większość nieoficjalne sposoby robienia tego w iOS 4. iOS 5 nie będzie już dla ciebie zadzwonić drawRect. Musisz to zrobić na dwa sposoby, jeden na iOS 5 i wyższy, korzystając z nowych połączeń, a drugi na iOS 4 i wcześniej, korzystając ze starych połączeń. Zapoznaj się z dokumentacją niestandardowych pasków nawigacyjnych w systemie iOS 5, aby uzyskać więcej informacji.

+0

Hi Owen, dziękuję za uzyskanie do tego. Podkatalogiłem 'UINavigationBar' i połączyłem go w pliku .xib, aby uzyskać niestandardowy nagłówek - działa on na iOS 4 i 5. Niemniej jednak usunąłem niestandardowy" UINavigationBar "i tylko zwykły pasek i nadal ten sam efekt, animacja widoków poprawnie przy wyświetlaniu podglądu, ale natychmiast przełącza się po kliknięciu przycisku Wstecz. – Hannes

0

Czy próbowałeś usunąć cały niestandardowy kod i przejść do natywnego paska nawigacji? Czy zachowanie pozostaje takie samo? W ten sposób możesz sprawdzić, czy Twój niestandardowy pasek nie spełnia warunków przejścia.

+0

Dzięki, właśnie to zrobiłem, ale wciąż pierwszy widok pojawia się bez animacji ... Zaktualizowałem moje pytanie. – Hannes