Are you sure the rotating view controller is also a child view controller of a UINavigationController (i.e. did you push it on the UINagivationController)?
If you presented it using presentViewController:animated:completion: for example the view controller itself would also need to implement shouldAutorotate.
On a side note, be cautious of overriding via category. A much better way would be to subclass UINavigationController and override the method in the subclass.