2011-10-31 72 views
1

我设置了两个视图:ViewControllerOne和ViewControllerTwo。
在我的ViewControllerTwo中,我有一个数字变量(dataValue),我在文本字段中输入,后来我在计算中将它用作浮点值。在视图之间来回切换时保留一个值

用户可以移动到另一个Class视图(ViewControllerOne),但是当它们返回到ViewControllerTwo时,它们在文本字段中输入的变量不会保留,并返回到我在ViewControllerTwo.m文件中定义的默认值。

如何让我的ViewControllerTwo记住我的dataValue?

我@synthesized我dataValueTextField和定义我在ViewControllerTwo.m默认dataValue:

@synthesize dataValueTextField; 
float dataValue = 1.00; 

然后,后来,我已经将我dataValueTextField成float值:

float textFieldData = [dataValueTextField.text floatValue]; 
dataValue = textFieldData; 

但是当我来回切换视图时,它永远不会记住dataValue。我需要添加一些东西到我的viewWillDisappear或我需要添加一些东西到我的viewWillDisappear或ViewWillAppear方法?
任何帮助,将不胜感激。我一直在抓着各种尝试不同的东西而无济于事。 谢谢。

回答

0

是否有可能在切换视图时,每次都实际创建一个视图控制器的新实例?这可能会解释重置为默认值的值。另一种可能性是,您将代码设置为从事件回调调用的默认值,该事件回调在视图显示时触发。您可以尝试注销所有事件处理程序,并查看在切换视图时要调用的内容。

+0

感谢您的建议。我不认为是这种情况(我不知道我甚至不知道如何创建视图控制器的新实例),但我会再次检查我的代码。非常感谢您的回复! – Jupiter869

0

如果您收到内存警告,View可能会被卸载,然后在您返回时重新加载,导致再次调用viewDidLoad。这将导致您的UITextField中的值被重置。

0

dataValue是一个浮点数,这意味着它是一个基元。基元不被保留,并在每个方法结束时丢失。它看起来如何声明dataValue,它是一个单身?我不是100%关于如何切换视图时如何处理单身人士,如果他们被释放或保留。

可能最好把dataValue变成一个实例变量?就像你用dataValueTextField做的那样。

+0

我会试试这个。希望它能奏效,我的智慧就此结束。谢谢 – Jupiter869