I have some views in my app that I don't want to suport orientation.
In didFinishLaunchingWithOptions
I add navigation:
...
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
...
In each ViewController
I have UITabBar
(I don't know if this is important).
In the first view controller I add:
-(BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
supportedInterfaceOrientations
is called at the view loading but shouldAutorotate
doesn't call as I rotate device.
What am I missing here?
It's because neither
UITabBarcontroller
norUINavigationController
is passing shouldAutorotate to its visible view controller. To fix that you may subclass either UITabBarController or UINavigationController and forward shouldAutorotate from there:In your subclassed UITabBarController add:
In your subclassed UINavigationController add:
in the
AppDelegate
:in your ViewController: