iPhone App Dev - 从子视图返回值到父视图

时间:2011-07-26 10:40:00

标签: iphone objective-c xcode

我有一个父视图控制器,它使用presentmodalview加载子视图。确切地说,这个子视图是一个登录页面。

登录页面有两个文本字段(电子邮件和密码)和一个“登录”按钮。当按下登录按钮时,提供数据输入是有效的,我想将用户详细信息发送给根视图控制器,如果用户存在或者以其他方式呈现用于向用户指示无效详细信息的uialertview,则根视图控制器将创建用户对象。已进入。

在我的子视图中,我将以下功能链接到“登录按钮”:

-(IBAction) signIn:(NSString*)userEmail with:(NSString*)userPassword{
    //takes text field values and instantiates a dbConnector object to 
    //check to see if user exists - must also post uialertview if user details incorrect
    NSString* uName = [email text];
    NSString* pword = [password text];
    userDetails = [[NSMutableArray alloc] initWithObjects:uName, pword, nil];
    NSLog(@"%@", userDetails);
}

按下按钮后,将userDetails数组传递回rootviewcontroller的最佳方法是什么?

解决方案 - 协议&代表

3 个答案:

答案 0 :(得分:1)

在ParentViewController中创建UserDeatails数组,并在ChildViewController中按下Button时设置其值。

但是你必须创建ParentViewController的对象;

ParentViewController * parentView = [[ParentViewController alloc] initWithNibName:@“ParentViewControllerName”bundle:nil];

parentView.userDeatails = userDetails_in_ChildView;

答案 1 :(得分:0)

在推送或呈现另一个视图控制器之前,您需要传递用户对象。

参考 this answer 。希望这有帮助。

答案 2 :(得分:0)

只需将变量声明为您的委托文件,如

String * strUsername; String * strPassword;

并且还为此创建属性和合成..

然后在你想要的地方创建一个你想要的对象之后......

NavigationBarAppDelegate * appDelegate =(NavigationBarAppDelegate *)[[UIApplication sharedApplication] delegate];

appDelegate.strUsername = uName; appDelegate.strPassword = pword;

现在这个值得到了每一次战争..只需要像上面那样创建委托对象......

NavigationBar是我的应用程序的名称。