我想在视图控制器之间导航时在uitextfields中保存文本

时间:2013-01-09 21:24:52

标签: ipad uiviewcontroller uinavigationcontroller ios6 xcode4.5

我有一个ipad应用程序,它有一系列的viewcontrollers,每个都有一组uitextfields。基本上我想要做的是在浏览不同的viewcontrollers时,我希望文本保留在已编辑的每个uitextfield中。现在发生的事情是当我离开某个视图控制器并返回它时,每个uitextfield都是空的。为了解决这个问题,我会调用viewWillDisappear或viewDidDisappear方法吗?如果是这样,我将如何保存每个文本域中的信息?

2 个答案:

答案 0 :(得分:2)

你只是做模态赛吗?如果您想返回上一个视图,只需使用[self dismissViewControllerAnimated:YES completion:nil],之前填写的所有内容仍将保留。只有当你再次回到初始视图时,文本将不再存在。但是,如果由于某种原因需要切换回初始视图,则只需将文本保存到NSUserDefaults,然后使用viewWillAppear上保存的值填充该字段。最好总是解除viewControllers,而不是做圆形segues。

答案 1 :(得分:0)

您可以滥用shouldChangeCharactersInRange方法并将到目前为止输入的字符保存为额外的字符串,并在切换viewcontroller后将其恢复。

<强>更新

对于视图中的每个文本字段,您需要设置一个saveString并将其关联,也许将标记值作为数组索引,然后您可以这样:

添加<UITextFieldDelegate>类的接口定义

将每个文本字段的委托设置为self

添加此方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *s = [textField replaceCharactersInRange:range withString:string];
    NSLog(@"current textfield value '%@'", s);
    // save s somwhere, e.g. to userdefaults or a DB table
    return YES;
}

现在,在切换回上一个视图后,您可以恢复每个文本字段的先前内容。我已经放入了NSLog(),因此您可以看到何时调用此方法。