I ended up abandoning the above approach and instead added function on my navigigation controller to handle displaying.
Displaying Scan:
[[self targetController] displayNewObject:scan];
On the receiving end:
- (void)displayNewObject:(_Scan *)scan
{
self.scan = scan;
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];
[[self navigationController] popToRootViewControllerAnimated:NO];
[self performSegueWithIdentifier: @"ShowScanDetail" sender: self];
self.scan = nil;
}