I've got the same issue. I always like to add a loadingViewController instead of the main viewcontroller stucture, such as splitView or tabbar view controllers. This is so I can have a nice loading with animation that is aware of the orientation.
So I never load something like the splitViewController onto the window in the applicationDidFinishLaunching method, but rather after and ONLY after I know the rest of my app has finished loading and is ready for use, initializing core data, receiving possible over the air updates for data to core data.
So when I'm ready to actually display the splitViewController, I send the removeFromSuperView call to the the loadingViewController.view and it's removed from the window. I then proceed to add the splitViewController to the window via [window addSubview:splitViewController.view]. Everything works EXCEPT the same problem reported in this incident in that if I start the app in landscape mode, my loadingViewController is aware it's landscape and shows the landscape version of the loading screen. But when the splitViewController is displayed, it's always in a portrait sized window. It takes manually rotating and rotating it back for the landscape splitViewController to display properly.
Anyone got more ideas?
Yours truly,
Stumped in landscape