Neal Neal - 4 months ago 29
iOS Question

How to force a UIViewController to Portait orientation in iOS 6

As the

is deprecated in iOS 6 and I used that to force a particular view to portrait only, what is the correct way to do this in iOS 6? This is only for one area of my app, all other views can rotate.


If you want all of our navigation controllers to respect the top view controller you can use a category so you don't have to go through and change a bunch of class names.

@implementation UINavigationController (Rotation_IOS6)

    return [[self.viewControllers lastObject] shouldAutorotate];

    return [[self.viewControllers lastObject] supportedInterfaceOrientations];

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];


As a few of the comments point to, this is a quick fix to the problem. A better solution is subclass UINavigationController and put these methods there. A subclass also helps for supporting 6 and 7.