iOS13 SceneDelegateがあるプロジェクトでpush遷移

はじめに

久々に新規プロジェクトを作ったら見慣れないSceneDelegateが追加されていた。

push遷移するための処理をAppDelegateに書くものだと思ったら、 こちらに書くことに気づかず時間がかかってしまった。

対応

willConnectToSessionにNavigationControllerの定義を書く
Main.storyboardにはStoryboardIDを設定しておく

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    ViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
    
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
    navigationController.view.backgroundColor = [UIColor whiteColor];
    navigationController.viewControllers = @[controller];
    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
}