iOS-6 - (BOOL)shouldAutorotate nicht immer genannt, für die navigation-Controller geschoben viewControllers
Für meine app rootViewController
ist navgationController
.
Fand ich, dass
schob controller
-(BOOL)shouldAutorotate
ist nicht immer genannt.
und
-(NSUInteger)supportedInterfaceOrientations
bekommen, die nur einmal aufgerufen werden.
Ich habe richtig in xcode's
Zusammenfassung Projekt (oder plist
) für alle windows-Orientierung unterstützen.
Ich soll diese Methode aufgerufen werden, da es einige uicontrol Positionierung-code, die ich ausführen möchten programmatisch für die Orientierung ändern.
Löste ich dieses problem durch überschreiben (Kategorie) navigation-controller die folgenden Methoden
-(BOOL)shouldAutorotate;
-(NSUInteger)supportedInterfaceOrientations;
Habe ich überprüft, die Steuerung ist immer geschoben und entsprechend aufgerufen jeweiligen geschoben controller uicontrol Positionierung-code in der Navigation-controller die folgende Methode
(NSUInteger)supportedInterfaceOrientations;
Dies ist in Ordnung, aber ich dont denke, das ist der richtige Weg. Bitte helfen Sie mir für eine bessere Lösung.
- In meinem Fall (als ich gepostet stackoverflow.com/questions/12610132/...) ich war nicht in der Lage, sich presentModalViewControllers, aber der pushViewController fein gearbeitet
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den folgenden link, müssen Sie erstellen eine benutzerdefinierte navigation zu unterstützen, sollte das automatische drehen
http://mobileappdevpage.blogspot.in/2012/11/how-to-use-should-autorotateios-6-with.html
Den anderen Weg, Sie können dies tun, durch die Schaffung der Kategorie der UINaviagationController
code für .h-Datei ist
und code für .m-Datei ist
Ich auch vor dem gleichen Problem mit dem navigation-controller. Es funktioniert in dem Fall alle gedrückt view-Controller, aber mein Szenario war ganz anders ich hatte einen viewcontroller geschoben in der navigation-controller (ViewControllerParent) als die Wurzel,
Durch einige der Projektanforderungen, ich hielt den ViewControllerParent als Basis, und dann wurde ich hinzufügen Kind-viewcontroller Sicht als Unteransichten der übergeordneten basierend auf Benutzer-Aktionen. Jetzt hatte ich ein Szenario, wo ich wollte Child1 nicht zu drehen und kind2 zu haben rotation.
Das problem, das ich konfrontiert war, dass meine [self.topViewController] in der Navigation controller-Klasse gibt immer mir das Parent-Objekt, da bin ich nicht darum, die Kinder in die nav-stack. Also meine shouldAutorotate Methoden in meine Kinder werden nie genannt. So hatte ich, um eine class check in der shouldAutorotate Methode meiner Eltern und dann wieder die Drehung Wert.
Ich habe so etwas in der übergeordneten Klasse (ViewControllerParent),es ist eine Art workaround, aber es wurde das Problem behoben,
-anoop
Können Sie überprüfen, ob die interface-Orientierung über
wenn der view-controller geladen wird, sagen wir, in
viewWillAppear
. Dort können Sie Ihr layout von Untersichten. Einmal der Ansicht ist,shouldAutorotate
wird immer aufgerufen, wenn das Gerät gedreht wird.Überschreiben UINavigationController ist der richtige Ansatz, aber ich bin mir nicht sicher, ob Sie die überprüfung der push-Controller supportedInterfaceOrientations der richtige Weg.
Blick auf meine Antwort hier: https://stackoverflow.com/a/12669343/253008
Ich hatte das gleiche Problem. überprüfen Sie diese Antwort
seine große approauch, anstatt die Anwendung ShouldAutoRotate