11

Ich habe eine iPhone-Anwendung, die ich derzeit in eine universal binary konvertieren, um mit dem iPad zu arbeiten. Ich habe alles, was ich in Bezug auf das Layout benötige, erfolgreich implementiert, so dass die volle Landschaftsfunktionalität jetzt in meiner App unterstützt wird (zuvor habe ich hauptsächlich den Portrait-Modus verwendet, um Inhalte anzuzeigen).UINavigationController Navigationsstack Probleme im Querformat

Aber ich habe ein seltsames Problem, und es tritt nur im Querformat-Modus: Wenn ich einen View-Controller auf den Stapel schieben, dauert es zwei Tippen auf die Zurück-Taste, um zum vorherigen View-Controller zurückzukehren! Der erste Tipp zeigt eine leere Ansicht, aber mit dem gleichen Namen auf der linken Seite der Navigationsschaltfläche, der zweite Tipp bringt den Controller zurück zur vorherigen Ansicht, wie es sollte.

Ich habe kein iPad zum Testen, also verlasse ich mich auf den Simulator. Das Problem wird auf dem iPhone nicht angezeigt und wird nicht angezeigt, wenn Sie in den Porträtmodus zurückkehren.

Meine App eines TabBarController mit Navigationscontroller besteht für die VCs geladen:

//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]]; 

Landschaft Fähigkeit zu implementieren, die UITabBarController außer Kraft gesetzt ist, wenn autorotate erforderlich:

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

... Werke fein. Ich navigiere mit dieser Methode in neue Ansichten.

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

Ist dies nur ein Simulationsfehler? Wie behebe ich dieses Problem?

Antwort

10

Es klingt wie eine andere ViewController reagiert auf:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

prüfen diese erste.

+1

Danke Kumpel, das war das Problem. Ich musste sicherstellen, dass alle meine ViewControllers implementiert - (BOOL) sollteAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation; –

+0

Wenn Sie 'CMD + N' verwenden, um neue' UIViewControllers' in XCode zu erstellen, ist diese Methode eine der Standardeinstellungen, die als Teil der Vorlage enthalten sind. – Sneakyness

+0

grrr Ich stehe genau vor der gleichen Art von Problem: Ich präsentiere einen Navigationscontroller als modal und dann schiebe ich einige ViewControllers. Der navController und alle gedrückten Controller geben YES auf shootAutorotateToInterfaceOrientation zurück, aber im Querformat muss ich zweimal auf "back" drücken, um die Navigationsleiste korrekt zu aktualisieren:/eine Idee? – yonel

Verwandte Themen