I have a Tab Bar application for iPad, created using the basic Tab Bar template. I have added some custom view controllers (one for each tab, each with a corresponding NIB) and also some extra view controllers with NIBs to be used as modal views. Everything works great until I rotate the device.
My app only supports portrait orientation, so I had this in all my view controllers:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIDeviceOrientationLandscapeLeft) &&
(interfaceOrientation != UIDeviceOrientationLandscapeRight);
}
However, the app would not rotate in the simulator or the device when turned upside down. I double and triple checked that all my view controllers had the above code.
I went through all my NIBs and checked that they all have “Rotate Subviews” ticked. I haven’t changed any of the NIB settings from the defaults anyway, apart from the basic things needed to get them showing in the tab views.
I tried changing the code in all my view controllers to this:
- (BOOL)shouldAutorotateToInterfaceOrientation(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
It made no difference. I have made absolutely sure that the same method is being used in all the view controllers. I don’t know what else I can do. I can see no reason why it shouldn’t rotate to the upside down view.
Any help with this would be much appreciated.
Got it! One of my View Controllers was not hooked up to the relevant tab in IB. As I hadn’t added the images or written the code for that View Controller yet, I didn’t notice that it wasn’t associated in IB. I had done the shouldAutorotateToInterfaceOrientation method, but it seems that didn’t take effect until the connection was made in IB.
Thanks very much for suggestions on this. That’s a highly frustrating problem now dealt with!