2013-04-11 2 views
2

Я имею эту установку для поддержки только в альбомной ориентации в большинстве моих viewcontrollersiOS6 пейзаж приложение только один контроллер полиориентированного popViewController вопрос

Мое приложение делегат имеет этот кусок кода:

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    NSUInteger orientations = UIInterfaceOrientationMaskLandscape; 
    if (self.window.rootViewController) { 
     UIViewController * pressented = [[((UINavigationController *)self.window.rootViewController) viewControllers] lastObject]; 
     orientations =[pressented supportedInterfaceOrientations]; 
    } 
    return orientations; 
} 

И в большинстве viewcontrollers это:

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskLandscape; 
} 

Моя проблема возникает, когда я нажимаю этот контроллер (тот, который я хотел бы повернуть):

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskALL; 
} 

Она вращается отлично, но когда я совать ViewController (нажмите на кнопку возврата навигационной панели) с ориентацией на портрет, представляющий ViewController также устанавливает это ориентация на портрет.

Как я могу заставить предстающий объект viewcontroller оставаться заблокированным на ландшафте или заставить диспетчер проблем вращаться назад до пейзажа перед появлением.

ответ

1

Добавьте к этому контроллеру портретного:

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    UIViewController* dummyController = [[UIViewController alloc] init]; 
    [self presentViewController:dummyController animated:NO completion:^{ 
     [self dismissViewControllerAnimated:NO completion:nil]; 
    }]; 
} 

Я знаю, что это хак, но это работает. Кто-нибудь знает лучшее решение?

+0

Pretty nice hack, работает как шарм;) – jonathanwiesel

+0

Больше не работает на iOS 7 –

Смежные вопросы