2011-12-15 12 views
1

可能性の重複:
show a login screen before Tab bar controller?は、タブバーコントローラの前にログイン画面が表示さ

私は、最初に表示ログイン画面でなければなりませんiphoneのアプリケーションを設計しています、それはタブバーを表示するようにした後5つのタブを備えたコントローラ。最初はログイン画面を起動することができますが、その後タブバーコントローラを表示することができなくなったので、ソースコードを手伝ってください。ここに私のコードは次のとおりです。これは、ビューベースのアプリケーション

application.Mある

-(void)applicationDidFinishLaunching:(UIApplication *)application {  
// Override point for customization after app launch 
    [window addSubview:viewController.view]; 
    [window addSubview:tabBarController. view]; 
    [window makeKeyAndVisible]; 
    LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil]; 
    [window addSubview:loginView.view]; 
} 

私が間違っているの

- (void)viewDidLoad 
{ LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil]; 
    [self.view addSubview:loginView.view]; 

    [super viewDidLoad]; 
} 

は、後にタブバットコントローラを表示することができませんビューcontroller.Mログイン画面。 アプリケーションが起動すると、最初はログイン画面の下部にタブバーのコントロールが表示されます。それを避ける方法?????コード で私を助けてください。またログインボタンをクリックした後、loginviewを却下する方法とタブバーコントローラをロードする方法???

+0

あなたは自分の答えを受け入れることを気にすることはできません場合、それはあなたの質問に答えるに力を入れて人々のために落胆され、以前の質問の答えに同意する必要があります。 –

答えて

2

がSteps-

  1. を次の手順を実行し、ファイルログインビューコントローラを選択します。
  2. ログインビューコントローラとしてのクラス名。
  3. AppDelegateファイルで、メイン(ルート)viewControllerをログインビューコントローラに置き換えます。
  4. ログインビューコントローラでは、ログイン用のボタンを作成します。

  5. - (IBAction)はloginButtonPressed:(ID)、送信者 {SampleViewController * sampleVC = [[SampleViewController ALLOC] initWithNibName: "SampleViewController" バンドル@:なし]。 [self presentModalViewController:sampleVC animated:YES]; }

4

UITabBarControllerを追加するようにウィンドウを設定してから、ログインを表示する必要があるときに最初にモーダルビューコントローラとしてログインビューを表示するのはなぜですか?

-(void)applicationDidFinishLaunching:(UIApplication *)application 
{  
    // Override point for customization after app launch 

    [window addSubview:tabBarController. view]; 
    [window makeKeyAndVisible]; 
    LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil]; 
    [tabBarController.view presentModelViewcontroller: loginView animated:YES]; 
    } 
+0

はい、モーダルビューコントローラが正しい方法ですが、 'animated'パラメータをNOに設定すると、画面上に表示され、アプリの起動時にすぐに実行できるようになります。 – Darren

2

あなたのログイン画面を実装するための別の方法が考えられます。アプリケーションデリゲートのメインビューでタブバーコントローラを表示させ、ユーザーがログインしているかどうかを追跡するためにアプリケーションデリゲートのBOOL値を設定するだけです。その値がfalseの場合、ログイン画面をタブバーコントローラー内からpresentModalViewController:を使用する新しいビューコントローラー。 iPhoneアプリでは、タブバーはアプリのインデックスになります。メインビューには常に表示されます。ログイン画面は、ログアウトした人だけに表示されるゲートと考えることができます。

3

はログインが行われた後、あなたがLoginViewであなたのタブバーを追加する必要があり、ここで

-(void)applicationDidFinishLaunching:(UIApplication *)application {  
// Override point for customization after app launch 
    [window addSubview:viewController.view]; 
    //[window addSubview:tabBarController. view]; 
    [window makeKeyAndVisible]; 
    LoginView *loginView=[[LoginView alloc]initWithNibName:@"LoginView" bundle:nil]; 
    [window addSubview:loginView.view]; 
} 

あなたのタブバーを追加しないでください。例えばLogin.mで

は、ビューベースのアプリケーション、XIBのためのViewControllerプロパティを変更した後、メイン開く(ルート).xibを選択した場合

- (void) doLogin 
{ 
    if(login) 
    { 
    TabBarController *aTabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil]; 
    [self.navigationController pushViewController:aTabBarController animated:YES]; OR 
    [self.view addSubView: aTabBarController.view]; 
    [aTabBarController release];  
    } 
} 
+0

私はIboutletとしてUiタブバーコントローラを宣言できますか? –

+0

はい、あなたはそれを宣言することができます... – Maulik

+0

ビューのコントローラでこのビューをロードしたコメントをコメントできますか?(void)viewDidLoad { \t LoginView * loginView = [[LoginView alloc] initWithNibName:@ "LoginView" bundle: nil];私は私のアプリケーションでログインビューを宣言しましたdidFinishLaunching didFinishLaunching。これを実行した後、私はログインビューの小さな部分が底部にいくつかのスペースを残しているのを見ることができます \t \t [self.view addSubview:loginView.view]; \t [super viewDidLoad]; } –

関連する問題