try
[self dismissViewControllerAnimated:YES completion:^{
// try this and the additional code below
[[NSNotificationCenter defaultCenter] postNotificationName:@"POPTOROOTVIEW" object:nil];
//or just this line as it may be that you're popToRoot is called before the modal view is animated off
[self.navigationController popToRootViewControllerAnimated:YES];
}];
Then in another view controller have this
- (void)viewDidLoad
{
....
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(popToRootViewPlease) name:@"POPTOROOTVIEW" object:nil];
....
}
- (void)popToRootViewPlease
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
- (void) dealloc
{
[[NSNotificationCenter defaultCenter]removeObserver:self];
}