El controller de vista presentado desaparece después de la animation utilizando animaciones UIViewController personalizadas

Miré a mi alnetworkingedor buscando una respuesta para esto y pasé las últimas dos horas sacando mi cabello sin fin.

Estoy implementando una animation de transición de controller de vista personalizado muy básica, que simplemente amplía el controller de vista de presentación y crece en el controller de vista presentado. Añade un efecto de desvanecimiento (0 a 1 alfa y viceversa).

Funciona bien cuando se presenta el controller de vista; sin embargo, al descartar, vuelve a mostrar el controller de vista de presenting para llenar la pantalla, pero luego inexplicablemente desaparece. No estoy haciendo nada después de estas animaciones para alterar el alfa o los valores ocultos, es casi un proyecto nuevo. He estado desarrollando aplicaciones iOS durante 3 años, así que sospecho que esto puede ser un error, a less que alguien pueda descubrir dónde me equivoco.

 class FadeAndGrowAnimationController : NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate { func animationControllerForPresentedController(presented: UIViewController!, presentingController presenting: UIViewController!, sourceController source: UIViewController!) -> UIViewControllerAnimatedTransitioning! { return self } func animationControllerForDismissedController(dismissed: UIViewController!) -> UIViewControllerAnimatedTransitioning! { return self } func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval { return 2 } func animateTransition(transitionContext: UIViewControllerContextTransitioning!) { let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as UIViewController let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as UIViewController toViewController.view.transform = CGAffineTransformMakeScale(0.5, 0.5) toViewController.view.alpha = 0 transitionContext.containerView().addSubview(fromViewController.view) transitionContext.containerView().addSubview(toViewController.view) transitionContext.containerView().bringSubviewToFront(toViewController.view) UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: { fromViewController.view.transform = CGAffineTransformScale(fromViewController.view.transform, 2, 2) fromViewController.view.alpha = 1 toViewController.view.transform = CGAffineTransformMakeScale(1, 1) toViewController.view.alpha = 1 }, completion: { finished in transitionContext.completeTransition(!transitionContext.transitionWasCancelled()) }) } 

}

Y el código para presentar:

  let targetViewController = self.storyboard.instantiateViewControllerWithIdentifier("Level1ViewController") as Level1ViewController let td = FadeAndGrowAnimationController() targetViewController.transitioningDelegate = td targetViewController.modalPresentationStyle = .Custom self.presentViewController(targetViewController, animated: true, completion: nil) 

Como puede ver, una animation bastante básica. ¿Me estoy perdiendo de algo? Como dije, se presenta perfectamente bien, luego se descarta el 99,99% perfectamente bien, pero el controller de vista debajo del despido se elimina inexplicablemente. El iPad muestra una pantalla en blanco, totalmente negra, después de esto.

Esto parece ser un error de iOS8. Encontré una solución pero es gueto. Después de la transición cuando una vista debe estar en la pantalla pero no, debe volver a agregarse a la window como esta:

 BOOL canceled = [transitionContext transitionWasCancelled]; [transitionContext completeTransition:!canceled]; if (!canceled) { [[UIApplication shanetworkingApplication].keyWindow addSubview: toViewController.view]; } 

Es posible que deba jugar con qué vista vuelve a agregar a la window, si debe hacerlo cancelado o cancelado, y tal vez asegurarse de hacerlo solo en el momento del despido y no en la presentación.

Fuentes: vista de contenedor que desaparece en Transición completa: http://joystate.wordpress.com/2014/09/02/ios8-and-custom-uiviewcontrollers-transitions/

tuvo el mismo problema ios 8.1

mi código rápido después de la transición completa

 if let window = UIApplication.shanetworkingApplication().keyWindow { if let viewController = window.rootViewController { window.addSubview(viewController.view) } }