11

Mam aplikację na iPhone'a, którą obecnie konwertuję do universal binary, aby współpracować z iPadem. Z powodzeniem wdrożyłem wszystko, czego potrzebuję pod względem układu, tak aby w mojej aplikacji była teraz obsługiwana pełna funkcjonalność krajobrazu (poprzednio używałem przede wszystkim trybu portretowego do wyświetlania treści).UINavigationPrzestrzenie sterujące nawigacją w trybie poziomym

Ale mam jeden dziwny problem, i to TYLKO występuje w trybie poziomym: kiedy popycham kontroler widoku na stos, potrzeba dwóch kliknięć na tylnym przycisku , aby powrócić do poprzedniego kontrolera widoku! Pierwsze dotknięcie pokazuje pusty widok, ale o tej samej nazwie po lewej stronie przycisku nawigacyjnego, drugie dotknięcie powoduje powrót kontrolera do poprzedniego widoku, tak jak powinien.

Nie mam iPada do testowania, więc polegam na symulatorze. Problem nie pojawia się na iPhonie i nie wyświetla się, gdy powrócisz do trybu pionowego.

Moja aplikacja składa się z TabBarController z kontrolerami nawigacji załadowanego do jego VC:

//application delegate 
- (void)applicationDidFinishLaunching:(UIApplication *)application 
//.... 
WebHelpViewController *vc8 = [[WebHelpViewController alloc] init]; 
UINavigationController *nv8 = [[UINavigationController alloc] initWithRootViewController:vc8]; 

[self.tabBarController setViewControllers:[NSArray arrayWithObjects:nv1,nv2,nv3,nv4,nv5,nv6,nv7,nv8,nil]]; 

wdrożyć zdolność krajobrazu, UITabBarController jest przestawić AutoRotate gdy wymagane:

//CustomTabBarController.m 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return [[(UINavigationController *)self.selectedViewController topViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
} 

... prace w porządku. Przechodzę do nowych widoków, korzystając z tej metody:

SomeViewController *vc = [[SomeViewController alloc] init]; 
[self.navigationController pushViewController:vc animated:YES]; 
[vc release]; 

Czy jest to tylko błąd symulacji? Jak mogę rozwiązać ten problem?

Odpowiedz

10

To brzmi jak kolejny ViewController reaguje na:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

Odjazd ten pierwszy.

+1

Dzięki, stary, to był problem. Musiałem upewnić się, że wszystkie moje ViewControllery zaimplementowane - (BOOL) powinnyAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation; –

+0

Jeśli używasz 'CMD + N' do tworzenia nowych' UIViewControllers' w XCode, ta metoda jest jedną z wartości domyślnych zawartych jako część szablonu. – Sneakyness

+0

grrr Mam dokładnie taki sam problem: przedstawiam kontroler nawigacyjny jako modalny, a następnie popycham niektóre kontrolery ViewController. NavController i wszystkie pchane kontrolery zwracają TAK do metodyAutorotateToInterfaceOrientation, ale w orientacji poziomej muszę nacisnąć "back" dwa razy, aby pasek nawigacji był poprawnie zaktualizowany:/jakikolwiek pomysł? – yonel