Iphone 在视图控制器之间传递变量

Iphone 在视图控制器之间传递变量,iphone,uiviewcontroller,Iphone,Uiviewcontroller,我有一个应用程序,在第一个视图控制器中保留四个变量。 通过导航控制器推送的第二个视图控制器应将这些变量发送到web表单 所以我需要在第二个视图控制器中使用这四个变量 目前,在第1视图控制器中,我在应用程序代理中设置了变量: MyDelegate *delegate = (MyDelegate *) [[UIApplication sharedApplication] delegate]; delegate.var1 = var1; delegate.var2 = var2; [...] 当我在

我有一个应用程序,在第一个视图控制器中保留四个变量。 通过导航控制器推送的第二个视图控制器应将这些变量发送到web表单

所以我需要在第二个视图控制器中使用这四个变量

目前,在第1视图控制器中,我在应用程序代理中设置了变量:

MyDelegate *delegate = (MyDelegate *) [[UIApplication sharedApplication] delegate];
delegate.var1 = var1;
delegate.var2 = var2;
[...]
当我在第二个视图控制器中需要它们时,我将通过我的委托获取它们。 但这可能是错误的方式


如何在控制器之间传输VAR?最好的方法是什么?

在第二个视图控制器中声明这些变量的属性,然后在创建第二个视图控制器时,在将其推送到导航堆栈之前,为这些属性赋值。

在第二个视图控制器中声明这些变量的属性,然后,创建第二个视图控制器时,在将其推送到导航堆栈之前,为这些属性赋值。

只要变量在标题中声明为实例变量,只要UIView控制器仍然实例化,就应该可以访问

只要变量在头中声明为实例变量,只要UIView控制器仍然实例化,就应该可以访问

我认为最好的做法是通过
MySecondViewController
构造函数传递它

我认为最好的做法是通过
MySecondViewController
构造函数传递它

我完全同意。它们是从第一个控制器传递到第二个控制器的参数。让它们成为全球性的国家是没有意义的,因此没有好的实践方法来推荐。我知道汤米。谢谢你的建议。一个问题,通过构造函数传递它们是一种不好的方式吗?我如何做反向操作?我的意思是在第二个视图控制器中时更改第一个视图控制器的变量。一种方法是使用NSUserDefaults,但这可能不是一种好方法。在IMO中,用户默认值并不是最糟糕的方法,假设这是关于最终以用户默认值结束的数据(在这种情况下,用户默认值充当模型)。其他可能性:VC2保存模型数据,其他控制器会收到有关模型中此更改的通知(通过观察模型更改或接收来自模型的通知)。或者在VC2中实现一个委托协议,并使VC1成为VC2的委托。我完全同意。它们是从第一个控制器传递到第二个控制器的参数。让它们成为全球性的国家是没有意义的,因此没有好的实践方法来推荐。我知道汤米。谢谢你的建议。一个问题,通过构造函数传递它们是一种不好的方式吗?我如何做反向操作?我的意思是在第二个视图控制器中时更改第一个视图控制器的变量。一种方法是使用NSUserDefaults,但这可能不是一种好方法。在IMO中,用户默认值并不是最糟糕的方法,假设这是关于最终以用户默认值结束的数据(在这种情况下,用户默认值充当模型)。其他可能性:VC2保存模型数据,其他控制器会收到有关模型中此更改的通知(通过观察模型更改或接收来自模型的通知)。或者您在VC2中实现了一个委托协议,并使VC1成为VC2的委托。这是来自不同答案的好资源:这是来自不同答案的好资源: