Si desea que todos nuestros controladores de navegación respeten el controlador de vista superior, puede usar una categoría para que no tenga que pasar y cambiar un montón de nombres de clases.
@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 apuntan algunos de los comentarios, esta es una solución rápida al problema. Una mejor solución es la subclase Uinavigation Controller y poner estos métodos allí. Una subclase también ayuda a apoyar 6 y 7.