In my mind, these situations are all parallel:
My view controller presented another view controller fullscreen, which has now been dismissed
One solution could be to take the Coordinator approach like in a MVVM-C style architecture. You never directly change view hierarchy in a VC but always call into the Coordinator to do it for you. coordinator.showDetails(...)
Additionally you define a viewDidBecomeForemost
method in your VCs that the coordinator can invoke when returning to a VC.