ALRIGHT es hat mich wie einen ganzen Monat und eine Hälfte, es herauszufinden, aber hier ist meine Lösung:
Es ist ziemlich schwer, jedes Mal für alle separaten UIViews
Umdrehungen Buchhaltung zu halten das Gerät dreht sich, also ging ich zurück zu den zwei UIViewControllers
Ansatz.
Diesmal entschied ich mich, eine UINavigationController
als Root-View-Controller zu haben und ich unterklassifiziert. Ich habe eine NSNumber
Variable in meiner Interface-Klasse festgelegt, um 2 oder mehr View-Controller zu berücksichtigen, die ein Benutzer haben könnte. In meinem Fall würde ich jedoch nur wirklich zwischen 0 und 1 wechseln. Außerdem übertrumpfte ich shouldAutoRotate
und supportedInterfaceOrientations
, um unterschiedliche Eigenschaften gemäß der NSNumber
Variable zu haben.
Bevor es weiter zu erklären, ich werde meinen Code schreiben ...
Das ist mein Interface-Klasse ist:
@interface MasterNavigationController : UINavigationController
@property (strong, nonatomic) NSNumber *num;
@end
Und meine Implementierungsklasse:
#import "MasterNavigationController.h"
@implementation MasterNavigationController
- (BOOL)shouldAutorotate {
if ([_num isEqualToNumber:[NSNumber numberWithInt:0]]) return NO;
return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
if ([_num isEqualToNumber:[NSNumber numberWithInt:0]]) return UIInterfaceOrientationMaskPortrait;
return [[self topViewController] supportedInterfaceOrientations];;
}
@end
Immer, wenn ich war in meinem UIViewController
, dass ich nicht rotieren wollte, würde die NSNumber
Variable auf 0 gesetzt werden. So würde der Navigationscontroller in der Lage sein zu sagen, ob es automatisch sein sollte rotieren oder nicht. Dann, als der Navigationscontroller den nächsten View-Controller schob, der sich drehen kann, setzte ich die Variable NSNumber
auf 1, und der Navigationscontroller konnte wissen, dass er automatisch rotieren sollte. Das ist großartig, denn immer, wenn es zum Controller mit nicht rotierender Ansicht zurückgeschoben wurde, wusste es, dass es sich neu orientieren musste, ohne dass alles kaputtging.
Hoffe, das hilft jedem, der damit Probleme hat !!! Es hat so lange gedauert, das herauszufinden.
Ist es möglich, die Animation für die Rotation zu deaktivieren? Danke, ich werde das heute später ausprobieren –
überprüfe mein Update in Antwort auf die Deaktivierung der Animation – Lion
AKTUELL nur herausgefunden, ich habe einen zu drehen und den anderen zu beheben, während 'shouldAutorotate' auf' NEIN' gesetzt ist. Die gedrehte Ansicht bleibt jetzt jedoch im Hochformat (es wird nur ein Porträt gedreht). Wie behebe ich das? –