Я использую замену segue, но в MasterVC я реализую
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
if ([identifier isEqualToString:@"showCalculatorViewController"]) {
if (self.splitViewController) {
NSObject *currentDetail = [self.splitViewController.viewControllers lastObject];
if ([currentDetail isKindOfClass:[RootCalcViewController class]]) {
....
Затем я заполняю новые свойства существующего VC и возвращаю NO.
Но у меня нет UINAvigationController в качестве моего начального контроллера подробного представления, так как я управляю навигацией от masterVC.
Кроме того, в AppDelegate, didFinishLaunchingWithOptions должна быть настроена правильная деталь VC. Сгенерированный код предполагает, что это UINavigationController. Аналогично в сгенерированном MasterViewController, viewDidLoad. Это сэкономит вам некоторые сбои приложения, если вы замените детальный UINAvigationController.
Когда я загружаю разные контроллеры представления, я позволяю "Заменить сегменты", чтобы заменить их.