1

J'ai deux contrôleurs de vue intégrés dans un contrôleur de navigation, mon premier contrôleur de vue est autorisé à tourner alors que mon deuxième contrôleur de vue doit toujours s'ouvrir en mode portrait, par exemple Je suis en mode paysage dans le contrôleur de première vue Je veux ouvrir mon second en mode portrait uniquement,Comment forcer mon contrôleur de vue à toujours s'ouvrir en mode portrait

Je présente le second contrôleur de vue en appuyant sur segue en premier.

+0

double possible de [comment forcer contrôleur de vue de rester en mode portrait?] (Http://stackoverflow.com/questions/16720968/how-to -force-view-controller-to-stay-in-portrait-mode) –

+0

Possible duplication de [Comment forcer une UIViewController à Portait orientation dans iOS 6] (http://stackoverflow.com/questions/12520030/how-to -force-a-uiviewcontroller-au-portrait-orientation-en-ios-6) – kb920

Répondre

2

Vous devrez mettre en œuvre shouldAutorotate sur la deuxième VC

Juste avant de présenter la deuxième VC (portrait) appelez

if([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) { 
     [[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationPortrait] forKey:@"orientation"]; 
} 
0

Solution 1: créer une sous-classe de UINavigationController personnalisée et remplacer ces méthodes comme celle-ci :

@interface LockedNavigationViewController() 

@end 

@implementation LockedNavigationViewController 

-(BOOL)shouldAutorotate { 
    return UIInterfaceOrientationMaskPortrait; 
} 

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000 
- (NSUInteger)supportedInterfaceOrientations 
#else 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations 
#endif 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

@end 
0

enter image description here

Sélectionnez votre projet -> général, puis suivez l'image ci-dessus.

1

Vous pouvez utiliser cette méthode dans ur AppDelegate classe et maintenir avec bool var

-(NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    if(self.isDisplayInPoratrait){ 
     return UIInterfaceOrientationMaskPortrait; 
    else 
     // return ur required orientation 
} 

self.isDisplayInPoratrait est variable bool déclaré dans AppDelagate ensemble cette variable oui classe qui tu veux présenter en mode portrait. Placez cette méthode dans la classe qui u wan présenter en mode portrait

-(BOOL)shouldAutorotate { 
    return NO; 
} 

-(UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationLandscapeLeft; 
}