When dismissing a modal view controller using dismissViewController
, there is the option to provide a completion block. Is there a similar equivalent for popViewController
?
The completion argument is quite handy. For instance, I can use it to hold off removing a row from a tableview until the modal is off screen, letting the user see the row animation. When returning from a pushed view controller, I would like the same opportunity.
I have tried placing popViewController
in an UIView
animation block, where I do have access to a completion block. However, this produces some unwanted side effects on the view being popped to.
If there is no such method available, what are some workarounds?
Best Answer
I know an answer has been accepted over two years ago, however this answer is incomplete.
This is technically correct because the
UINavigationController
API doesn't offer any options for this. However by using the CoreAnimation framework it's possible to add a completion block to the underlying animation:The completion block will be called as soon as the animation used by
popViewControllerAnimated:
ends. This functionality has been available since iOS 4.