Prevent autorotate for one view controller?

autorotate, ios, ios6, objective-c, uiviewcontroller

Solution

When a `UINavigationController` is involved, create a category on the `UINavigationController` and `override supportedInterfaceOrientations`.

#import "UINavigationController+Orientation.h"

@implementation UINavigationController (Orientation)

- (NSUInteger)supportedInterfaceOrientations {
   return [self.topViewController supportedInterfaceOrientations];
}

- (BOOL)shouldAutorotate {
    return YES;
}

@end  

Now, iOS containers (such as UINavigationController) do not consult their children to determine whether they should autorotate.

How to create a category 1. Add a new file (Objective c- category under cocoa touch) 2. `Category` : Orientation on UINavigationController 3. Add the above code to `UINavigationController+Orientation.m`

Problem

My app can autorotate but I need one of the views to only show in portrait mode and don't know how to achieve this. I tried this (among other things) but the view in question still rotates: ``` // ViewController.m -(BOOL)shouldAutorotate { return NO; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } ``` Can someone kindly point out what I'm doing wrong? Thanks. -edit- It's for iOS 6.1

Original source

Related problems