2011-07-28 108 views
1

我正在實現一個iPhone應用程序,這是一個基於標籤欄的應用程序。一開始,我拋出了一個Modal View,它顯示了一個登錄表單。如果登錄成功,我將忽略此模態視圖,然後顯示選項卡欄導航的第一個選項卡。問題是我需要將用戶信息從模態視圖傳遞到選項卡欄的控制器。 我有這麼遠是: 在我的AppDelegate:從模態視圖傳遞值到標籤欄控制器

- (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;} 

在我InicioAppModalViewController我通過點擊導航按鈕的項目有2個功能拋出了一個模態視圖登錄表單:

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

然後,在這種形式中,我剛剛得到了一些TextFields,並且我使用NSURLConnection方法進行了驗證,如果登錄是OK的。之後,在解除此模態視圖之前,我想將用戶信息發送到導航欄控制器。

我該如何執行它?有什麼建議麼?

在此先感謝!

回答

0

最簡單的方法是使用Dependency injection,這意味着將此信息注入您的控制器,蘋果建議使用委派。

所以,你必須做的是確定你的標籤欄的屬性來保存你想傳遞然後做這樣的事情的用戶信息:

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

我寧願使用代表團。我在網上看過一些教程,但任何人都有模態視圖和標籤欄視圖分佈。 – Ruben

+0

@Ruben現在更改我的答案的措辭:) –

+0

:)你是對的,「蘋果推薦」......你能檢查我在我的問題中所做的修改嗎?也許你可以幫助我更好 – Ruben

0

我會建議使用的委託。在你的模式的看法,有一個屬性:

@property (nonatomic, assign) id delegate; 

然後把此行只是presentModalViewController前:

loginVC.delegate = self; 

然後,您可以實現一個方法,如collectUserData:(NSDictionary的*)信息,並將其命名爲在loginVC之前,你就像這樣釋放它:

[delegate collectUserData:allMyInfoThatIwant]; 
相關問題