在视图之间来回切换时保留一个值

时间:2011-10-31 19:12:56

标签: objective-c ios

我设置了两个视图:ViewControllerOne和ViewControllerTwo 在我的ViewControllerTwo中,我有一个数字变量(dataValue),我在一个文本字段中输入,我稍后在计算中将其用作浮点值。

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

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

我已经@synthesized我的dataValueTextField并在ViewControllerTwo.m中定义了我的默认dataValue:

@synthesize dataValueTextField;
float dataValue = 1.00;

然后,稍后,我将dataValueTextField转换为浮点值:

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

但是当我来回切换视图时,它永远不会记住dataValue。我是否需要在viewWillDisappear中添加内容,还是需要在viewWillDisappear或ViewWillAppear方法中添加内容?
任何帮助,将不胜感激。我一直在抓稻草尝试不同的事情无济于事。 感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

也许最好将dataValue变成实例变量?就像你使用dataValueTextField一样。