Search code examples
iphoneuinavigationcontrollerstoryboarduiinterfaceorientationsubclassing

How to subclass Navigation Controller when using storyboards?


I'm using storyboards in interface builder using the Xcode menu 'Editor...Embed in...Navigation Controller'.

It seems that in iOS 6 you have to subclass the UINavigationController to allow all orientations, with

- (NSUInteger)supportedInterfaceOrientations {
    return (UIInterfaceOrientationMaskAll   );
}

But how do I subclass the UINavigationController with a storyboard app as there is no reference to it in the code?


Solution

  • You can select the navigation controller scene's navigation controller from the storyboard:

    enter image description here

    And then use the identity inspector on the right to change the class:

    enter image description here

    For instance change the "Class" there to MyCustomNavigationController and then just create a new class in your project called MyCustomNavigationController:

    MyCustomNavigationController.h:

    #import <UIKit/UIKit.h>
    
    @interface MyCustomNavigationController : UINavigationController
    @end
    

    MyCustomNavigationController.m:

    @implementation MyCustomNavigationController
    
    - (NSUInteger)supportedInterfaceOrientations {
        return UIInterfaceOrientationMaskAll;
    }
    
    ... any other methods you want ...
    
    @end