アプリケーションのルートに 3 つのビューコントローラー/ビューがあります: LoginViewController、HomeViewController、およびPlayViewcontroller
私が探しているのは、状態に基づいてこれら 3 つを切り替える良い方法です(例: ログインに成功すると、loginViewcontroller がそのデリゲート [rootviewcontroller] に ping を送信して、それ自体を削除し、homeviewcontroller を表示します)。
ここにはいくつかのオプションがあるようです:
1.RootViewController は UIViewController です。必要に応じてサブビューを追加/削除します。
[self.view addSubview:loginViewController.view];
2.RootViewController は UIViewController です。必要に応じてビューをモーダルに表示/削除します。
[self presentViewController:loginViewcontroller animated:NO completion:nil];
3.RootViewController は UINavigationController です。それは物を押す/ポップします。
[self pushViewcontroller:loginViewController];
最初のオプションは、ビューコントローラーがどうあるべきかという全体的なアイデアを回避しているため、理想的ではないことを読みました。
私のアプリケーション全体がモーダルであるため、2 番目のオプションは奇妙に思えますか? ビューコントローラーは、モーダルに表示されたビューコントローラーの上にモーダルに表示できますか?
3 番目のオプションが最適のようですが (ここで説明されているように)、私の特定の実装ではいくつかの問題が発生します。
- 「navigationController」の比喩は正確には適合しません(ログインして「ホームコントローラーにドリルダウン」しているわけではありません...)
- navController の rootviewcontroller を常に切り替える必要がありますか? それとも、loginvc の上にある homevc の上に playvc をプッシュするだけですか?
- LoginVC は、それ自体が navigationViewController です。アカウントを作成するための複数ステップのプロセスを経る vc をプッシュしますが、navcontroller に navcontroller をプッシュすることはできません。
だから、私の質問はこれです:
それらのいくつかがUINavigationControllers自体である場合、同じ階層レベルでView Controllerを設計する最良の方法は何ですか?
****注:*** 私はすでにここを見てきましたが、私の使用例 (複数の navcontrollers) に対して十分な回答が得られませんでした.********
編集:私は答えを見つけました:私は問題を間違って考えています。代わりに、独自のContainer ViewControllerを作成するという観点から考えるべきです。