Finally, I got it working by doing this :
UINavigationController* detailNavController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
self.splitViewController.viewControllers = @[self.splitViewController.viewControllers[0], detailNavController];
instead of changing only one controller, you change the whole array, but keeping the same reference to the master. Works well !