I am working on location-based Application.

Assume I have ViewController 1(RootVC) -> MountainView is current Location.
Now User navigated to another ViewController 2 from ViewController 1 and there is an option to change location in ViewController 2 if the user changes the location in ViewController 2 and move back to ViewController it should be updated with new location request the API if there is no location change in ViewController 2 it should not do the API call again. Same case if the user navigated to ViewController 3 from ViewController 2 if there is a change in location from ViewController 3 it should reflect in VC2 and VC1.

I thought of doing with delegates but the problem is it will call instantly when we change location in VC2 it will call VC1 delegate and load the page, but I want to load the page only when the user navigates to VC1. Same happens with Notification or observer pattern also.

Any design pattern I can use and achieve this throughout the App.