IOS Objective C - 在两个视图控制器之间传递参数时出错

时间:2015-05-12 08:06:31

标签: ios objective-c xcode

我有两个viewControllers:

RegisterViewController& Register2ViewController

我有一个从RegisterViewController到Register2ViewController的segue。

我想在Register2ViewController中设置textfielduser的值,其值为用户在RegisterViewController中的textfieldemail中输入的值。

到目前为止,这就是我所做的。

RegisterViewController.m

中的

- (IBAction)NextPage:(UIButton *)sender {

    [self performSegueWithIdentifier:@"toRegister2" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{


    if ([[segue identifier] isEqualToString:@"toRegister2"]) {
        Register2ViewController *controller = (Register2ViewController *)segue.destinationViewController;
        controller.user.text = self.email.text;
    }

但是当我在RegisterViewController中运行并填充textfields的值并转到Register2ViewController时,textfield用户是空的,你能帮我吗?谢谢

2 个答案:

答案 0 :(得分:4)

controller.user.text = self.email.text;

此时,Register2ViewController尚未加载到内存中,这就是您遇到此问题的原因。

Register2ViewController.h中保留NSString属性,并在此处设置该字符串的值。 然后,在Register2ViewController的viewDidLoad中,将该字符串设置为UITextField的文本。

答案 1 :(得分:2)

尝试使用NSString传递文本,而不是直接将值传递给textField。在@property (strong,nonatomic) NSString *userName;中声明Register2ViewController。然后将值传递给字符串,如

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"toRegister2"]) {
        Register2ViewController *controller = (Register2ViewController *)segue.destinationViewController;
        controller.useName= self.email.text;
    }

然后在viewDidLoad的{​​{1}}中,在textField上设置字符串,如此Register2ViewController。 试着这样做。