iOS 6 - (BOOL) shouldAutototate nicht aufgerufen für Navigationssteuerungen pushed viewControllers

7

Für meine App rootViewController ist navgationController .

Ich habe das gefunden Controller gedrückt

-(BOOL)shouldAutorotate wird nicht aufgerufen.

und

-(NSUInteger)supportedInterfaceOrientations wird nur einmal aufgerufen.

Ich habe korrekt in xcode's Projekt Zusammenfassung (oder plist ) für Windows alle Orientierungsunterstützung überprüft.

Ich möchte, dass diese Methode aufgerufen wird, da es einen uicontrol-Positionierungscode gibt, den ich programmatisch für eine Orientierungsänderung ausführen möchte.

Ich habe dieses Problem gelöst, indem ich die folgenden Methoden des Navigationssteuergeräts (Kategorie) überschrieben habe:

%Vor%

Ich habe überprüft, welcher Controller gedrückt wird, und dementsprechend den entsprechenden uicontrol-Positionierungscode des verschobenen Controllers in der folgenden Methode des Navigations-Controllers aufgerufen.

%Vor%

Das funktioniert gut, aber ich denke nicht, dass dies der richtige Weg ist. Bitte helfen Sie mir für eine bessere Lösung.

    
Aditya Deshmane 10.10.2012, 20:28
quelle

5 Antworten

27

Sie können den folgenden Link überprüfen, Sie müssen benutzerdefinierte Navigation zur Unterstützung erstellen, sollte automatisch

drehen

Ссылка

Die andere Möglichkeit besteht darin, die Kategorie von UINaviagationController

zu erstellen

Code für .h-Datei ist

%Vor%

und Code für .m-Datei ist

%Vor%     
Shreesh Garg 29.11.2012 05:43
quelle
1

Ich hatte auch das gleiche Problem mit dem Navigationscontroller. Es funktioniert gut bei allen Pushed View Controllern, aber mein Szenario war ziemlich anders. Ich hatte einen Viewcontroller, der als root in den Navigationscontroller (ViewControllerParent) geschoben wurde,

%Vor%

Aufgrund einiger Projektanforderungen habe ich ViewControllerParent als Basis beibehalten, und dann habe ich die Ansicht von Child ViewController basierend auf Benutzeraktionen als Unteransichten zum übergeordneten Element hinzugefügt. Jetzt hatte ich ein Szenario, in dem ich wollte, dass Child1 nicht rotiert und Child2 Rotation hat.

Das Problem, dem ich gegenüberstand, war, dass mein [self.topViewController] in der Navigations-Controller-Klasse immer das Eltern-Objekt zurückgibt, da ich die Childs nicht in den Nav-Stapel schiebe. Also werden meine shouldAutorotate-Methoden in meinem Childs nie aufgerufen werden. Also musste ich die Methode shouldAutorotate meiner Elternklasse einchecken und dann den Rotationswert zurückgeben. Ich habe so etwas in der Elternklasse (ViewControllerParent) gemacht, es ist eine Art Workaround, aber es behebt das Problem

%Vor%

-anoop

    
anoop4real 24.01.2013 15:00
quelle
0

Sie können die Schnittstellenausrichtung über

prüfen %Vor%

wenn der View Controller geladen ist, zB in viewWillAppear . Dort können Sie Ihr Layout von Unteransichten erstellen. Sobald die Ansicht geöffnet ist, wird shouldAutorotate aufgerufen, sobald das Gerät gedreht wird.

    
Mundi 10.10.2012 20:35
quelle
0

Das Überschreiben von UINavigationController ist der richtige Ansatz, aber ich bin mir nicht sicher, ob Sie die Push-Controller unterstütztenInterfaceOrientations auf die richtige Weise überprüfen.

Sehen Sie sich meine Antwort hier an: Ссылка

    
shabbirv 10.10.2012 20:36
quelle
0

Ich hatte das gleiche Problem. Überprüfen Sie diese Antwort Es ist ein großer Approach, anstatt ShouldAutoRotate

anzuwenden     
Gishantha Jayasooriya 03.12.2015 05:32
quelle

Tags und Links