2011-07-28 19 views
1

私はタブバーベースのアプリケーションであるiPhoneアプリを実装しています。最初は、私は、ログインフォームを表示するモーダルビューを投げます。ログインがOKの場合は、このモーダルビューを閉じ、タブバーナビゲーションの最初のタブを表示します。問題は、モーダルビューからTabバーのコントローラーにユーザー情報を渡す必要があることです。 私がこれまで持っていることである:私AppDelegateで :私のInicioAppModalViewControllerでモーダルビューからタブバーコントローラに値を渡す

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

tabBarController.delegate = self; 
// Add the tab bar controller's view to the window and display. 
self.window.rootViewController = self.tabBarController; 
[self addTabBarArrow]; 
[self.window makeKeyAndVisible]; 

//Throw up the Modal View 

InicioAppModalViewController *tempView = [[InicioAppModalViewController alloc] initWithNibName:@"InicioAppModalView" bundle:nil]; 
[self.tabBarController presentModalViewController:tempView animated:true]; 
[tempView release]; 
return YES;} 

私はナビゲーションボタンの項目をクリックすると、ログインフォームをモーダルビューを投げるために2つの機能を持っている:

- (IBAction)showModalLoginForm:(id)sender { 
LoginViewController * loginVC = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 
[self presentModalViewController:loginVC animated:YES]; 
[loginVC release]; } 

この形式では、私はいくつかのTextFieldを取得しており、NSURLConnectionメソッドを使用してログインがOKであるかどうかを確認します。その後、このモーダルビューを閉じる前に、ユーザー情報をナビゲーションバーコントローラに送信したいと思います。

どうすれば実装できますか?助言がありますか?

ありがとうございます!

答えて

0

最も簡単な方法はDependency injectionです。これはコントローラにこの情報を注入することを意味します。アップルが委任を使用することをお勧めします。

だから何あなたがしなければならないことは、あなたがこのような何か渡したいユーザー情報を保持するためにあなたのタブバーでプロパティを定義している:

[myTabBar new]; 
[myTabBar setUserInfo:myUserInfo]; 
+0

私はむしろ代表団を使用したいと思います。私はいくつかのチュートリアルをオンラインで見てきましたが、誰もモーダルビューとタブバービューの配布を持っています。 – Ruben

+0

@Ruben今私の答えの言い回しを変更しました:) –

+0

:) You'are right、 "Apple recommends" ...あなたが私の質問で行った編集を確認してください。多分あなたは私をより良く助けることができました – Ruben

0

を、私は、デリゲートを使用することをお勧めしますが。あなたのモーダルビューでは、プロパティを持っています。それからちょうどpresentModalViewController前にこのラインを置く

@property (nonatomic, assign) id delegate; 

loginVC.delegate = self; 

あなたがそのようなcollectUserDataような方法を実現することができます。(NSDictionaryの*)の情報を、それを呼び出しますあなたがそれをリリースする直前のloginVCで:

[delegate collectUserData:allMyInfoThatIwant]; 
関連する問題