             return popToRootViewController(animated: true)
         }
         let transitionDelegate = (viewControllers[1] as? NavgationTransitionable)?.tr_pushTransition
-        transitionDelegate?.completion = completion
+        transitionDelegate?.completion = { [weak self] in
+            completion?()
+            self?.delegate = nil
+        }
         transitionDelegate?.transition.popToVCIndex(0)
         delegate = transitionDelegate
         return {

            fatalError("No this viewController for pop!!!")
        }
        let transitionDelegate = viewController.tr_pushTransition
        transitionDelegate?.completion = completion
        transitionDelegate?.transition.popToVCIndex(index)
        delegate = transitionDelegate
        return {

     */
    public func tr_pushViewController<T: UIViewController>(_ viewController: T, method: TransitionAnimationable, statusBarStyle: TRStatusBarStyle = .default, completion: (() -> Void)? = nil) where T: NavgationTransitionable {
        let transitionDelegate = TRNavgationTransitionDelegate(method: method, status: .push, gestureFor: viewController)
        transitionDelegate.completion = { [weak self] in
            completion?()
            self?.delegate = nil
        }
        viewController.tr_pushTransition = transitionDelegate

        delegate = transitionDelegate
