Here you can do with delegate methods
// This is your root ViewController to call delegate methods
#import "ThirdViewController.h"
#import "SecondViewController.h"
@interface ViewController ()<ThirdViewControllerDelegate>
@end
@implementation ViewController
#pragma mark -
#pragma mark ThirdViewController Delegate Method
// Implementation of delegate methods in your Root ViewController
-(void)didSelectValue:(NSString *)value{
NSLog(@"%@",value);
}
// Pass the last Vc delegate to the next ViewController
-(void)gotoSeconddVc{
SecondViewController *vc2=[[SecondViewController alloc]init];
vc2.lastDelegate=self;
[self.navigationController pushViewController:vc2 animated:YES];
}
#import "ThirdViewController.h"
@interface SecondViewController : UIViewController
@property(nonatomic,retain) id <ThirdViewControllerDelegate> lastDelegate;
@end
-(void)gotoThirdVc{
ThirdViewController *vc3=[[ThirdViewController alloc]init];
vc3.delegate=self.lastDelegate;
[self.navigationController pushViewController:vc3 animated:YES];
}
Implementation of last viewcontroller
@implementation ThirdViewController
-(void)btnDoneClicked{
[self.navigationController popToRootViewControllerAnimated:YES];
[self.delegate didSelectValue:strValue]; //call delegate methods here
}