title: In UISplitViewController, can't make showDetailViewController:sender: push onto detail navigationController
body: <p>In iOS 8, view controllers can now call <code>showDetailViewController:sender:</code> to have the system determine the proper view controller to present the detail view controller.</p>
  
  <p>In my app, I have a UISplitViewController, which contains two UINavigationControllers in its viewControllers array. The first UINavigationController contains my 'master' view, a subclass of UITableViewController. The second UINavigationController contains my 'detail' view.</p>
  
  <p>Since I'm trying to make this work universally, I'm trying to use <code>showDetailViewController:sender:</code> to display the detail view:</p>
  
  <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
  
      self.itemVC.item = self.itemStore.items[indexPath.row];
  
      [self showDetailViewController:self.itemVC sender:self];
  }
  </code></pre>
  
  <p>This works fine with the Horizontal Compact trait (iPhone style), when <code>self.splitViewController.collapsed == YES</code>, but not when the trait is Regular (iPad, not collapsed). On the iPad, it replaces the detail UINavigationController with the bare detail view controller (instead of replacing that UINavigationController's viewControllers array).</p>
  
  <p>To get around this, I'm tested for whether or not it's collapsed, and if it isn't, I'm wrapping the detail view controller in another UINavigationController before showing it:</p>
  
  <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
  
      self.itemVC.item = self.itemStore.items[indexPath.row];
  
      UIViewController *vcToShow;
  
      // For whatever reason, when not collapsed, showDetailViewController replaces the detail view, doesn't push onto it.
      if (self.splitViewController.collapsed) {
          vcToShow = self.itemVC;
      } else {
          vcToShow = [[UINavigationController alloc] initWithRootViewController:self.itemVC];
      }
  
      [self showDetailViewController:vcToShow sender:self];
  }
  </code></pre>
  
  <p>I suppose alternatively I could just configure <code>self.itemVC</code> and avoid calling <code>showDetailViewController:sender:</code> altogether when <code>self.splitViewController.collapsed == NO</code>:</p>
  
  <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
  
      self.itemVC.item = self.itemStore.items[indexPath.row];
  
      // For whatever reason, when not collapsed, showDetailViewController replaces the detail view, doesn't push onto it.
      if (self.splitViewController.collapsed) {
          [self showDetailViewController:vcToShow sender:self];
      }
  }
  </code></pre>
  
  <p>But, this feels like it's defeating the purpose of <code>showDetailViewController:sender:</code>, which is to loosen up the coupling between <code>self</code> and the rest of the view hierarchy.</p>
  
  <p>Is there a better way to handle this?</p>