popViewControllerAnimated之后UITextField内容为空

时间:2012-06-18 13:48:34

标签: ios xcode uinavigationcontroller uitextfield popviewcontrolleranimated

在我的应用中,我正在使用导航控制器。我的问题是,当我转到上一个视图然后回到当前视图时,此视图中的所有TextField都是空的。

当我从导航控制器浏览堆栈时,我不知道如何保存这些值(在文本字段中)。

这是我调用popViewControllerAnimated:

的方法
- (IBAction)swipeBack:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}

4 个答案:

答案 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)

为什么不将它设置为存储它的属性?如果要将其推送显示,只有在它为零成员时才能分配它。