理解できない問題が 2 つあり、誰かが助けてくれることを願っています。
このコードは、既存の UINavigationController 階層を分割ビュー コントローラーから取得し、それを使用して画面を引き継ぐ場合には機能しません。画面が真っ暗になるだけ
UINavigationController* myself = self.navigationController;
[myself removeFromParentViewController];
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"QuestionnaireViewController"];
[myself pushViewController:controller animated:YES];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.window.rootViewController = myself;
ただし、このコードは機能します。rootViewController を新しい UINavigationController に設定できるのに、self.navigationController に設定できないのはなぜですか?
UINavigationController *navController = [[UINavigationController alloc] init];
UINavigationController* myself = self.navigationController;
[myself removeFromParentViewController];
navController.viewControllers = myself.viewControllers;
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"QuestionnaireViewController"];
[navController pushViewController:controller animated:YES];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
app.window.rootViewController = navController;
私の2番目の問題は、ユーザーが「戻る」ときにナビゲーションコントローラーをsplitViewControllerに復元することです。新しい UINavigationController を detailView に割り当てることはできますが、self.navigationController を割り当てることはできません。
問題は同じ問題だと思います。何らかの理由で、新しい UINavigationController は UIView の navigationController と同じではありません。なんで?