Suppose , We have 3 ViewControllers called ViewControllerA , ViewControllerB , ViewControllerC in our UINavigationController
. To be specific , ViewControllerA is the RootViewController
and ViewControllerB and ViewControllerC are pushed on it. So, Currently ViewControllerC is on the Top and visible to user.
I want to return to ViewControllerA by calling [self.navigationController popToRootViewControllerAnimated:YES];
method and pass some data to ViewControllerA from here. I have to update some UI according to the data passed from ViewControllerC.
If I had to return data from ViewControllerB , then I could implement custom protocol/delegate. But what can be a good approach in the situation described above ?
Thanks in advance for your help.
You can try NSNotificationCenter as shown below.
Example:
In your ViewControllerA.m
In your ViewControllerC.m
The best approach is to separate shared information in a different class (I suggest, it will be some model class). Just store the same instance of model class in both view controllers and update them whenever model class changes. Use notifications, KVC or ask model state every viewDidAppear: method.
Here you can do with delegate methods
This is your root ViewController to call delegate methods
Implementation of delegate methods in your Root ViewController
Pass the last Vc delegate to the next ViewController
Implementation of last viewcontroller