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