iOS 6 UIInterfacePortrait SOMENTE viewcontroller sendo apresentado e preso na paisagem ... quando voltar de um viewcontroller paisagem na pilha nav

Assim, como muitos outros, deparei-me com o problema de ter apenas um ou dois controladores de visualização compatíveis com as orientações de interface retrato e paisagem, em um aplicativo somente retrato. Tudo funcionou bem antes do iOS 6, mas de repente autorotating parou de funcionar. Graças a algumas ótimas perguntas aqui, consegui resolver esse problema fazendo com que o navController inicial retornasse a preferência individual de topViewController para shouldAutorotate por meio de:

    - (BOOL)shouldAutorotate
{
    return  self.topViewController.shouldAutorotate;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

No entanto, eu tropecei em um novo problema. a raiz vc (viewController A) NÃO deve se auto-rotular e deve suportar apenas o retrato. ViewController B na pilha de nav suporta retrato e paisagem. Se eu estou no viewController B, e estou na paisagem, e toque em "back" para pop a vista de volta para viewController A ... vc A carrega na paisagem, que não é supostamente para apoiar, e não vai girar de volta ao retrato porque shouldAutorotate para vc A está definido como NO ...

Qualquer idéia sobre como lidar com isso seria muito apreciada. Meu pensamento inicial foi para substituir vc B's "back" botão com um método manual que a primeira força gira de volta ao retrato se a visão está na paisagem ... então aparece o viewcontroller volta para vc A ... mas eu não consigo descobrir como forçar uma rotação programaticamente. Alguma ideia?

Aqui estão os métodos de interface em vc A:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return NO;
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

e aqui está o que eles estão em vc B:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

questionAnswers(2)

yourAnswerToTheQuestion