The way that I handle this is the following: to have a flag that is initially set to false, when you press the child view controller on your navigation controller, set this flag to true, no on viewDidAppear, if the flag is false then this is the initial load, if true, then it returns from the child controller that drops out of the navigation stack.
source share