My app is a UITabBarController --> UINavigationController --> UITableViewController --> UIViewController.
I want to do 2 things:
Prevent my tableview from rotating, I want it to always stay portrait.
FORCE & Allow my UIViewcontroller to rotate landscapeleft.
What I know:
I understand that the viewcontroller at the top of the hierarchy controls rotation. This would be my UITabBarController? Or rather its only viewcontroller which would be at objectIndex:0?
My project settings allow for Portrait, LL and LR rotations. Im thinking this is the pattern I need to follow in order to solve this is allow ALL at the top level to rotate and then control each vc individually, correct?
This is what I have found so far in SO.
So for my top hierarchy, i set the project settings to allow rotation to Portrait, LL and LR.
and then in my tableviewcontroller which i dont want to rotate:
-(BOOL)shouldAutorotate{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
and finally in my uiviewcontroller which I want to rotate:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
-(BOOL)shouldAutorotate{
return YES;
}
However this does not work. I can rotate both in any direction. I also dont know how to force rotation LL when I get to my uivc which is called from a modal segue from my tablevc.
Any help understanding this mess would be greatly appreciated :)