Se vuoi che tutti i nostri controller di navigazione rispettino il controller di vista superiore, puoi utilizzare una categoria in modo da non dover passare e cambiare un sacco di nomi di classe.
@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
Come alcuni dei commenti indicano, questa è una soluzione rapida al problema. Una soluzione migliore è UinavigationController sottoclasse e metti lì questi metodi. Una sottoclasse aiuta anche a supportare 6 e 7.