Add this line before the view controller view:
vc.modalPresentationStyle = UIModalPresentationCurrentContext
If you performed all the correct actions of the parent child up to the view controller chain, this forces the view to replace the view MyChildViewController, and then the view MyChildViewController returns when the view is rejected.
Oh, and I forgot to mention, even then it will only work on the iPad. The presented view controller view always occupies the entire screen on the iPhone - it is always displayed in the root view.
EDIT: Starting with iOS 8, this feature is also available on the iPhone. (As well as popovers and split views - basically, most iPad-only form statements have become false with iOS 8, which in my opinion is terrific news.)
source share