2

アプリケーションのルートに 3 つのビューコントローラー/ビューがあります: LoginViewControllerHomeViewController、および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を作成するという観点から考えるべきです。

4

3 に答える 3

2

ビューコントローラーは、モーダルに表示されたビューコントローラーの上にモーダルに表示できますか?

はい。

ルートコントローラーがモーダルに提示されているとは思いません。ルート コントローラーは、アプリケーション ウィンドウによって所有されます。モーダルに提示されたコントローラーを却下するように、それを却下することはできません。

IMO、ログインコントローラーをモーダルビューコントローラーとして提示し、ユーザーが正常に認証されたらそれを閉じます。

于 2013-05-03T05:15:30.923 に答える
0

私は今日同じ問題を抱えていたので、その点を理解するために UITabBarController を再構築しました (UITabBarController はいくつかのナビゲーション コントローラを含むコンテナ ビュー コントローラで構築されています)。ここにコードを追加しましたhttps://github.com/damienromito/CustomTabBarController

これに関するAppleのドキュメントはこちら: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

于 2014-02-22T01:39:45.670 に答える