我有一个父视图控制器,它使用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的最佳方法是什么?
解决方案 - 协议&代表
答案 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是我的应用程序的名称。