1

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

4

2 回答 2

2

你只是在做模态序列吗?当你想返回上一个视图时,只需使用[self dismissViewControllerAnimated:YES completion:nil],之前填写的所有内容都将保留。只有当您回到最初的视图时,文本将不再存在。但是,如果您出于某种原因需要返回初始视图,您可以将文本保存到 NSUserDefaults,然后使用保存在 viewWillAppear 上的值填充该字段。最好总是关闭 viewControllers 而不是做循环 segues。

于 2013-01-09T23:56:34.610 回答
0

您可以滥用该shouldChangeCharactersInRange方法并将到目前为止键入的字符保存到一个额外的字符串中,并在切换视图控制器后恢复它。

更新

对于视图中的每个文本字段,您需要设置一个 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() 以便您可以看到何时调用此方法。

于 2013-01-09T21:36:44.380 回答