Reputation: 6394
Assume that we have 3 view controllers: A
, B
, and C
. A
is the root view controller, which has presented B
, and B
has in turn presented C
. How can we perform a custom unwind segue from C
to A
that does not reveal B
?
A - B - C
A UIStoryboardSegue
has a reference to its source view controller as well as its destination view controller, but what about the view controllers in between (B
in our example)? We can perform whatever animations we want on C
, but I don't see how we can affect B
in any way.
The goal is simply to dismiss all but the root (B
and C
) to the right while having A
come in from the left, so both source and destination are swiping horizontally next to each other. B
should not be visible at any point of the animation.
My example dismisses only two views, but I hope to find a solution that would apply to an arbitrary number of views. Furthermore, I am not interested in solving this using a UINavigationController
. I have tried simply dismissing B
, which does indeed dismiss C
as well, but you can still see both B
and C
during the animation.
Upvotes: 0
Views: 234
Reputation: 8322
You can dissmiss your controller as below :
self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) // you need to track viewcontroller's stack hierarchy
Upvotes: 0