UIViewControllerHierarchyInconsistency on Replace Segue

I have a seemingly simple segue in a storyboard. The segue is only called on iPad, in a UISplitViewController. In the storyboard, the segue is configured to go from one UITableViewController to another, using the kind "Show Detail (e.g. Replace)". The code is also simple, called from didSelectRowAtIndexPath:


[self performSegueWithIdentifier:@"classOverviewToStrugglingiPadSegue" sender:self];


In iOS 12 and earlier, this worked as expected; the new UITableViewController replaced whatever was in the detail pane of the UISplitViewController.


In iOS 13 (Xcode 11 beta 5), I get a crash on the performSegue line above:


'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<my target ViewController:>
should have parent view controller:<the root view controller> but actual parent is:<UINavigationController:>'


Other segues seem to operate ok.


If I change the segue kind to "Replace" (in the Deprecated section), the segue then performs without a crash. There are a few differences, plus I'm not particularly keen on introducing a new deprecation.


Any idea what's going on here?