2013-01-09 48 views
1

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

回答

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(),以便您可以看到何时调用此方法。

+0

感谢您的评论。原谅我,但你能给我一个小例子来说明如何做到这一点?这个概念对我来说是100%新的 – Taylor

+0

@泰勒我已经添加了一个例子。 –

+0

谢谢,这正是我需要的!非常感激 – Taylor

2

你刚刚做模态赛?当您想要返回到上一个视图时,只需使用[self dismissViewControllerAnimated:YES completion:nil],之前填入的内容仍会保留。只有当你回到最初的观点时,文本才会再出现。但是,如果由于某种原因需要继续回到初始视图,则可以将文本保存到NSUserDefaults,然后使用viewWillAppear上保存的值填充该字段。最好的做法是始终关闭viewControllers,而不是循环执行循环。

相关问题