2011-07-19 12 views
0

アプリケーションdidFinishLaunchingWithOptionsに次のコードがあります。ここで、ユーザーログイン用のモーダルビューコントローラを提示します。アプリケーションの起動時にモーダルビューを表示するにはどうすればよいですか?

LoginViewController_iPhone *loginViewController=[[LoginViewController_iPhone alloc]initWithNibName:@"LoginViewController_iPhone" bundle:nil]; 
UINavigationController *loginNavigationController=[[UINavigationController alloc]initWithRootViewController:loginViewController]; 
loginNavigationController.modalPresentationStyle=UIModalPresentationFullScreen; 
[self.window.rootViewController presentModalViewController:loginNavigationController animated:NO]; 

[loginViewController release]; 
[loginNavigationController release]; 

ただし、空白の画面が表示されます。私が次のものに置き換えた場合

self.window.rootViewController=loginNavigationController; 

ログイン画面が正しく表示されます。アプリケーションが起動している間は、他のView ControllerはrootViewControllerプロパティに割り当てられません。これを動作させるために別のView Controllerが必要ですか?

答えて

3

はい。メソッドpresentModalViewControllerを呼び出すには、ウィンドウのrootViewControllerプロパティに何かを割り当てる必要があります。

+0

作品。ありがとう。それは私が疑ったものでした。 – ChrisP

+0

ただ一般的に、あなたはnilだったオブジェクトのメソッドを呼び出そうとしていました。 –

0
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:LoginViewController]; 

navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:navController animated:NO]; 

これは、アプリケーションが起動するとすぐに最初に読み込まれるビューのviewDidLoadで設定できます。したがって、ログインが成功するとすぐに、それをポップアウトすることができ、ロードされたビューを準備することができます。

+0

このアプローチはうまくいくが、AppDelegateへの代理人を経由してコールバックを行うと、最初の答えが選択されたので、ログイン後にさらに制御できるようになる。 – ChrisP

関連する問題