Cancele todas las transiciones modales al presentar un nuevo controller

Estoy buscando una forma de cancelar toda transición modal en curso.

Necesito impulsar un nuevo controller de vista en cualquier momento del ciclo de vida de mi aplicación, por lo tanto, no puedo confiar en el delegado viewDidAppear para comenzar la presentación de esta nueva vista.

Cuando una transición modal ya está sucediendo e bash impulsar (con animation) un nuevo controller, obtengo la " NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from to while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed terminación debido a la exception no NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from to while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed .

Mis únicas alternativas son empujar el nuevo controller sin animation, o encontrar una manera de cancelar todas las transiciones modal pendientes.

¿Alguna ayuda?

He usado el enfoque que sugeriste:

"empuje el nuevo controller sin animation"

Presionar o presentar te permite no usar una animation, así que creo que es lo suficientemente bueno. En cuanto a lo que sugirió @Spynet:

mejor u simplemente addSubView y haz tu animation realmente no quieres modal o push like means …

No debe mezclar UIViewController's UIViews en otro (s) UIViewController('s) . La lógica de la rotation, por ejemplo, se pierde. También se pierde la lógica y el comportamiento de UIView . Si lo desea, puede crear fácilmente un contenedor UIViewController y trabajar con eso. Hay un gran video sobre esto en los videos de WWDC.