A: 

The LandscapeViewController is not automatically rotating because interfaceOrientation is UIInterfaceOrientationLandscapeRight, so you have to return YES for UIInterfaceOrientationLandscapeRight

To have your views resizing correctly you have to open your xib file with Interface Builder, then into the Inspector and finally into the tab "Size".

Zapan
As I said in the question, I'm already returning `YES` for in the landscape controller.
Nathan de Vries
I was sure you had write `UIInterfaceOrientationLandscapeLeft` instead of `UIInterfaceOrientationLandscapeRight` ...My mistake.
Zapan
+1  A: 

Nathan,

I feel that you have set PortraitViewController as the rootViewController of UINavigationController. I also believe that you are restricting the PortraitViewController's orientation only to UIInterfaceOrientationPortrait only in the shouldAutorotateToInterfaceOrientation method. If so then, any view controller that you push will have the orientation of the rootViewController itself unless you are not changing the device orientation by rotating your device.

So if you need the LandscapeViewController in the UIInterfaceOrientationLandscapeRight orientation then just allow this in shouldAutorotateToInterfaceOrientation: method and don't screw things by explicitly setting the device orientation.

Shreekara