将值从模态视图传递到选项卡栏控制器

时间:2011-07-28 19:47:35

标签: objective-c xcode cocoa-touch cocoa

我正在实施一个iPhone应用程序,这是一个基于Tab Bar的应用程序。一开始,我抛出一个Modal View,它显示了一个Login表单。如果登录正常,我将关闭此模态视图,并显示标签栏导航的第一个选项卡。问题是我需要将用户信息从模态视图传递到选项卡栏的控制器。 到目前为止我得到的是: 在我的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方法验证登录是否正常。之后,在解除此模态视图之前,我想将用户信息发送到导航栏控制器。

我该如何实现它?有什么建议吗?

提前致谢!!

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用Dependency injection,这意味着将此信息注入您的控制器,Apple建议使用委托。

所以你需要做的是在标签栏中定义一个属性来保存你想要传递的用户信息,然后执行以下操作:

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

答案 1 :(得分:0)

我建议使用代表。在模态视图中,有一个属性:

@property (nonatomic, assign) id delegate;

然后将此行放在presentModalViewController之前:

loginVC.delegate = self;

然后你可以实现一个方法,比如collectUserData:(NSDictionary *)信息,并在你发布它之前在loginVC中调用它:

[delegate collectUserData:allMyInfoThatIwant];