今日、私はベストプラクティスについて疑問に思っています。この簡略化された例にどのようにアプローチすればよいかについてのコメントをいただければ幸いです。ルートビューコントローラを使用して読み込むビューを決定する
ログインが便利なアプリがあるとします。そこで、私たちは、2つのビューと、対応するビューコントローラ、LoginViewとMainViewを持っています。 MainViewはナビゲーションコントローラのルートビューとルートコントローラです。 LoginViewは、ユーザーがログインできるようにするビューです。
アプリが初めて起動されると、ログインが完了したら、LoginViewが表示されてからMainViewが表示されます。その後の起動時に、MainViewのみが表示されます。これに
一つのアプローチは、applicationDidFinishLaunchingでこのすべてを処理するために、次のようになります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *rootController = [[MainView alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
if (notLoggedIn) {
LoginView *vc = [[LoginView alloc] initWithNibName:@"LoginView" bundle:nil];
[rootController presentModalViewController:vc animated:NO];
}
return YES;
}
独立した専用の「ルート」ビューコントローラでこれを処理できるようにするとよいでしょう。このコントローラはAppDelegateによって読み込まれ、適切なView Controllerをロードします。これがより良いアプローチになるのであれば誰でもアドバイスを提供できますか?もしそうなら、それについてどうやって行くのですか?
このような状況では、別の方法をお勧めしますか?
ありがとうございました。
ありがとう、bryanmac!私はこれがどこに行くのが好きです。私の理解を確認してください。私はクラスを追加します:AuthProvider。次に、MainViewコントローラはModel.authDelegate = AuthProviderを設定します。コントローラが制限されたデータにアクセスしようとすると、モデルはAuthProviderの関数を呼び出して、ユーザーが現在認証されているかどうかを判断します。一致しない場合、AuthProviderにログインプロンプトが表示されます。しかし、AuthProviderがモーダルビューコントローラを提示する場合は、MainViewコントローラへの参照が必要です。 AuthProviderを初期化するときにMainViewから渡しますか? – jmac