通过xib文件将数据从一个视图控制器传递到另一个视图控制器

时间:2013-06-17 05:37:27

标签: iphone xib viewcontroller

我想创建一个应用程序,它包含表单子目录。在这里,我通过单一视图应用程序创建一个新项目。在这个firstViewController中我放了按钮并按下它,它重定向到secondViewController。

在这里,我有一个表格。并希望从用户和提交按钮获取数据我想将其重定向到thirdViewController并希望在thirdViewController上打印表单数据。

在firstViewController.m文件中,我写了

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.fullName = self.nameTextField.text;
[tempView setFullName:self.fullName];
[self.view addSubview:tempView.view];

}

在SecondViewController.m文件中

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

NSLog(@"received info %@", [self.fullName description]);

self.nameLabel.text = [self.fullName description];

}

在日志中我得到(name :)值,但在secondViewController中收到的信息为null。

我通过使用xib文件来完成所有这些操作。没有使用故事板。

请帮我把这个表单数据传递给secondViewController。

感谢。

3 个答案:

答案 0 :(得分:2)

抱歉,我无法理解你为什么要完成这两行代码:

tempView.fullName = self.nameTextField.text;
[tempView setFullName:self.fullName];

相反, 在Second View Controller的NSString

中创建.h file的属性
@property (nonatomic,retain)    NSString *strFullName;

并在.m file中合成。

@synthesize strFullName;

现在,

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.strFullName = self.nameTextField.text;
[self.view addSubview:tempView.view];
}

答案 1 :(得分:1)

如果您想从一个视图控制器导航到另一个视图控制器,我认为您需要使用Navigation controller。那么你需要在ThirdViewController中合成iVar“fullName”。并保留SecondViewController

中的值

<强> 1。 ThirdViewController.h

 @property(nonatomic, retain) NSString *fullName;

<强> 2。 ThirdViewController.m

@synthisize fullName;
dealloc {
[fullName release];
}

第3。 SecondViewController.m

-(IBAction)nextVCButton:(id)sender
{

SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

NSLog(@"name : %@",self.nameTextField.text);
tempView.fullName = self.nameTextField.text; 
[tempView setFullName:self.fullName];
[self.view addSubview:tempView.view];
}

答案 2 :(得分:0)

尝试使用presentViewController方法而不是addSubview ....

-(IBAction)nextVCButton:(id)sender
{
    SecondViewController *tempView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    NSLog(@"name : %@",self.nameTextField.text);
    tempView.strFullName = self.nameTextField.text;
    [self.view addSubview:tempView.view];
    [self presentViewController:tempView animated:YES completion:nil];
}