在我的应用中,我正在使用导航控制器。我的问题是,当我转到上一个视图然后回到当前视图时,此视图中的所有TextField都是空的。
当我从导航控制器浏览堆栈时,我不知道如何保存这些值(在文本字段中)。
这是我调用popViewControllerAnimated:
的方法- (IBAction)swipeBack:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
答案 0 :(得分:1)
当您按下或弹出视图控制器时,它分别从内存中加载或卸载。您需要在弹出控制器之前保存信息,并在分配新信息之后并在将信息推入堆栈之前加载信息。您可以使用NSUserDefaults
或基本文件I / O来保存和重新加载信息。
保存:
装载:
答案 1 :(得分:1)
在您之前的视图中,.h文件声明了一个属性:
@property (noonatomic, retain) YOURVIEWCONTROLLER *secondVC;
然后在@implementation中合成属性:
@synthesize secondVC;
然后替换代码,您将视图控制器作为模态视图呈现,其中包含:
if(!secondVC){
YOURVIEWCONTROLLER *controller=[[YOURVIEWCONTROLLER alloc]init.......];
[self setSecondVC:controller];
[controller release];//if you ain't using arc else just set it to nil
controller=nil;
}
[self presentModalViewController:self.secondVC animated:YES];
'YOURVIEWCONTROLLER'是包含textfield的第二个View控制器类的名称。别忘了在-dealloc中释放secondVC属性。希望它有所帮助。
答案 2 :(得分:0)
这里有两件事需要解决: 1.保存文本字段的内容。 2.再次按下视图控制器时恢复文本字段的内容。
您可以通过将文本字段值保存到全局对象(如AppDelegate或任何其他全局单例)来解决第一个问题。
处理2的最佳方法是使用文本字段为视图控制器创建初始化程序。例如:
- (id)initWithOptions:(NSDictionary*)options;
然后,当您需要在堆栈上推送控制器时,您将从1的全局存储中获取先前保存的值,并在选项字典中传递它们。然后,在 viewDidLoad 中,将值分配给字段。
答案 3 :(得分:0)
为什么不将它设置为存储它的属性?如果要将其推送显示,只有在它为零成员时才能分配它。