我设置了两个视图: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方法中添加内容?
任何帮助,将不胜感激。我一直在抓稻草尝试不同的事情无济于事。
感谢。
答案 0 :(得分:0)
当你切换视图时,它是否有可能每次都实际创建一个新的视图控制器实例?这可能解释了重置为默认值的值。另一种可能性是您将代码设置为从事件回调中调用的默认值,该事件回调在视图显示时触发。您可以尝试注销所有事件处理程序,并查看在视图之间切换时调用的内容。
答案 1 :(得分:0)
如果您收到内存警告,View可能会被卸载,然后在您返回时重新加载,导致再次调用viewDidLoad。这将导致重置UITextField中的值。
答案 2 :(得分:0)
dataValue是一个浮点数,这意味着它是一个原语。原语不会被保留,并且在每种方法结束时都会丢失。它看起来如何声明dataValue,它是一个单身?我不是100%关于切换视图时如何处理单身,如果它们被释放或被保留的话。
也许最好将dataValue变成实例变量?就像你使用dataValueTextField一样。