La causa de esto es que el ancestro viewController no está configurado correctamente. por ejemplo imaginar:
UIViewController * myController = ... // a view controller without a proper ancestor
ahora:
myController.tabBarController == nil
Por lo tanto:
[myController presentModalViewController:otherController];
fallará (al presentarse bajo la barra de pestañas). La solución es añadir myController a través de su ancestro
[parentController addChildViewController:myController];
Ahora, parentController
hay que añadir a otro controlador de la misma manera y así sucesivamente hasta la raíz es su tabController. Esto solo está disponible en iOS 5+. Si se compila para iOS 4 o anterior, tendrá que solucionar esto asegurándose de que todos sus controladores se agreguen directamente a un controlador UINav o UITab. Si esto no es posible, tendrá que acceder al UITabBarController a través de una variable global.
que utilizan mundial variable. Gracias –