2011-07-24 45 views
3

すぐにログインせずに使用できるアプリを開発していますが、ログインする必要のあるタブがあります。だから私は、それらのタブが開くたびに私のログインビューをスライドさせたい。ユーザーがログインビューで[キャンセル]ボタンを押すと、モーダルウィンドウが閉じられ、以前のユーザーと同じビューに戻るはずです。ログインに成功すると、ウィンドウが閉じられ、タブが読み込まれます。これを実装する最良の方法は何ですか?私はカスタムタブバーコントローラを作るべきですか?ログイン画面をモーダルビューとして表示

編集:私はカフェインのアプローチを取った。これは私のために働いているようだ:

// App delegate 

#pragma mark - UITabBarController delegate 

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
      shouldSelectViewController:(UIViewController *)viewController { 
    if ([[viewController topViewController] loginRequired]) { 
    LoginViewController *loginViewController = [[LoginViewController alloc] init]; 
    UINavigationController *navController = [[UINavigationController alloc] 
     initWithRootViewController:loginViewController]; 
    [tabBarController presentModalViewController:navController animated:YES]; 
    [loginViewController release]; 
    [navController release]; 
    return NO; 
    } else { 
    return YES; 
    } 
} 
+0

いいえ、あなたがログインしているかどうかを確認してください。ログインしていない場合は、モーダルビューを表示してください。 – Simon

答えて

1

tabBarController:shouldSelectViewControllerUITabBarControllerDelegateに設定してみてください。そのデリゲートメソッド内からモーダルログインコントローラを提示し、成功した場合はYESを返し、そうでない場合はNOを返します。

+0

ありがとう!仕事をしているようだ。 –

0

あなたは単にタブの変化を検出するために、TabBarController delegate methodsを使用して、後で使用するために選択されたインデックスを保存することができます。

1
  1. あなたのtabBarControllerをお客様のrootViewControllerにしてください。

  2. LoginControllerのクラスとビューを作成します。ログインに成功すると、次のことができviewDidLoadの方法に進みますとLoginViewControllerを参照して

    LoginController *lvc = [[LoginController alloc]initWithNibName:@"LoginController" bundle:[NSBundle mainBundle]]; 
    
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:LoginController]; 
    
    
    [self presentModalViewController:navController animated:NO]; 
    
        // This gives navigation control to the login controller // 
    
  3. を使用

    発売する最初のタブで
  4. 、(あるいはあなたがモーダルビューを必要とするタブ)ログインが成功しなかった場合にだけ[self dismissModalViewControllerAnimated:YES];

  5. を行うには、パスワードの回復のためのForgotLoginControllerまたはちょうどpopToRootViewControllerに移動し、前の画面に戻るか、ナビゲーションスタックの最初のビューにポップとtに滞在ナビゲートすることができます彼はログインオプション。

+0

ありがとうございます。でも、これは私が今実装しているもので、私が望むように動作しません。ユーザーがログインビューで[キャンセル]ボタンを押すと、モーダルウィンドウが閉じられ、以前と同じビューに戻るはずです。ログインが成功すると、ウィンドウが閉じられ、タブが読み込まれます。 " –

+0

確認を編集.... – Legolas

関連する問題