title: Present nth View Controller without showing its root VC
body: <p>Let's say I have 3 controllers (A, B, C). A and C is ViewControllers, B is NavigationController. Normal application flow is A as root view, A present (modal) B, B push C.
  What I want is to present C as top view controllers without going through all the animation from A-B-C but still have the hierarchy (means C can go back to A), is it possible? </p>
  
  <p>We can set window rooViewController directly to C but it wont have the hierarchy</p>
  
  <p><strong>EDIT:</strong>
  Maybe my question isnt clear enough, the main point here is, when I open my app, I want to show C directly but still have A->B->C view hierarchy so I can go back to A via normal pop and dismiss</p>
  
  <p><strong>EDIT2:</strong>
  I manage to show C with B-C hierarchy, so I can pop back to B from C. Now my problem is how can I <strong>present</strong> B (NavigationController) from A (ViewController) so when I close B it will **dismiss* to A</p>
  
  <p><strong>EDIT3:</strong>
  I saw some answer that use NavigationController, it works <strong>BUT</strong> not what I want because normally from A to B I use modal <code>presentViewController</code> and from B to A I use <code>dismissViewController</code></p>
  
  <p><strong>EDIT4:</strong>
  So far what I got is</p>
  
  <pre><code>self.window.rootViewController = vcA;
  [self.window makeKeyAndVisible];
  [vcA presentViewController:vcB animated:NO completion:nil];
  [vcB pushViewController:vcC animated:NO];
  </code></pre>
  
  <p>this will give correct hierarchy that I want but it give fast animation (a blink) showing A and than C and also give warning <code>Unbalanced calls to begin/end appearance transitions for &lt;vcA: 0x7fcfa0cf9c50&gt;.</code></p>
  
  <p><strong>EDIT5:</strong>
  I endup ignoring the warning and stick with my prev answer (but still welcome for another solution). And for the blinking problem I use workaround below</p>
  
  <pre><code>uiview *overlay = [new uiview]; // using vcA.frame
  overlay.backgroundColor = white; // I use dominant color of vcC 
  vcA addSubview:overlay;
  self.window.rootViewController = vcA;
  [self.window makeKeyAndVisible];
  [vcA presentViewController:vcB animated:NO completion:^{
      [overlay removeFromSuperview];
  }];
  [vcB pushViewController:vcC animated:NO];
  </code></pre>
  
  <p>This will disguise the blinking behavior so no one will notice (I hope :-p)</p>