Commit 9aec4010 by Orkhan Alikhanov

Allowing transition cancellation in TransitionController

parent 4ff9db52
...@@ -131,25 +131,29 @@ open class TransitionController: ViewController { ...@@ -131,25 +131,29 @@ open class TransitionController: ViewController {
open func transition(to viewController: UIViewController, completion: ((Bool) -> Void)? = nil) { open func transition(to viewController: UIViewController, completion: ((Bool) -> Void)? = nil) {
prepare(viewController: viewController, in: container) prepare(viewController: viewController, in: container)
switch motionTransitionType { if case .auto = viewController.motionTransitionType {
case .auto:break viewController.motionTransitionType = motionTransitionType
default:
switch viewController.motionTransitionType {
case .auto:
viewController.motionTransitionType = motionTransitionType
default:break
}
} }
view.isUserInteractionEnabled = false view.isUserInteractionEnabled = false
MotionTransition.shared.transition(from: rootViewController, to: viewController, in: container) { [weak self, viewController = viewController, completion = completion] (isFinishing) in MotionTransition.shared.transition(from: rootViewController, to: viewController, in: container) { [weak self] isFinishing in
guard let s = self else { guard let s = self else {
return return
} }
defer {
s.view.isUserInteractionEnabled = true
completion?(isFinishing)
}
guard isFinishing else {
s.removeViewController(viewController: viewController)
s.removeViewController(viewController: s.rootViewController)
s.prepare(viewController: s.rootViewController, in: s.container)
return
}
s.rootViewController = viewController s.rootViewController = viewController
s.view.isUserInteractionEnabled = true
completion?(isFinishing)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment