The problem is that you are doing things that are not suported by apples design. That problems with the tab bar roattion are well known, and you find here stackoverflow many post about that topic.
In apples design strategy the top most controller must allow both rotations, only the sub controllers can reduce that to one orientation.
if you want it the other way, the top most support portrait, and the childs both, the you are on your own.
These things that are not supoorted by apple are verry time consuming.
i was in the situation, that didRotate..() was not called. i finnally solved it by self rotating the view using CGtransform..., which info I got here in stackoverflow.
To solve that, use two view controllers, one which allows both orientations, one which allows only one. to avoid duplicate code, you may call common code from an inherited class.