Se você deseja que todos os nossos controladores de navegação respeitem o controlador de visualização superior, você pode usar uma categoria para não precisar passar e alterar vários nomes de classes.
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end
Como alguns dos comentários apontam, essa é uma solução rápida para o problema. Uma solução melhor é a subclasse uinavigationController e coloca esses métodos lá. Uma subclasse também ajuda a apoiar 6 e 7.