ViewController が以下の様な階層になっていて、
・CustomTabBarController
・・UINavigationController
・・・CustomViewController
いくつか CustomViewController を pushViewController したうえで、CustomViewController から presentViewController したあと dismiss して、
popViewController すると、一応動くけどアニメーションが変になったり、最悪の時には pop しなくなることがあった。
原因は、CustomTabBarController でオーバライドしていた viewDidAppear:animated で、super の viewDidAppear を呼んでいないためだった。
ちゃんと呼んでやることで解決。
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// do something...
}