I've had trouble with this. Setting shouldAutorotateToInterfaceOrientation: makes it so that pushing viewControllers onto a stack will result in their views being oriented properly, but you can't force an orientation to portrait or landscape with an explicit function call.
The best I've seen so far is to handle the animation yourself (with a CATransform and related CoreAnimation calls). It's not pretty.
If someone knows of a way to force the view to rotate (i.e. without pushing/popping view controllers, and without rotating the actual device) then please let me/us know.