UITableViewController 保存问题
Posted
技术标签:
【中文标题】UITableViewController 保存问题【英文标题】:UITableViewController save issue 【发布时间】:2012-04-01 22:34:25 【问题描述】:我有一个具有编辑/保存和取消按钮的 UITableViewController。目前我正在显示 5 行的自定义 UITableViewCell。自定义 UITableViewCell 包含文本字段和标签。假设用户在第一个表格单元格中输入文本并点击“保存”,那么我将丢失输入/修改的文本。而如果用户在输入/修改文本后点击返回键,则输入/修改的值通过以下方式捕获:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
.......code exists to capture value here
但另一方面,如果用户点击“保存”按钮而不返回文本字段,那么我将丢失输入/修改的值。在此处捕获用户输入的最佳方式是什么:
a) 当用户返回文本字段时 --> 我已经在做 b) 当用户点击保存按钮而不返回文本字段/文本视图时 --> ????
提前致谢, 罗摩
【问题讨论】:
【参考方案1】:您可以在使用委托方法输入字符串时保留一个用于保存字符串的属性。比如:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
NSMutableString *testString = [NSMutableString stringWithString:self.textField.text];
[testString replaceCharactersInRange:range withString:string];
self.stringInProgress = testString;
return YES;
另一种选择可能是调用 [tableView endEditing] 作为保存时要做的第一件事,但我不确定会触发 textFieldShouldEndEditing: 通知。
【讨论】:
+1 我会选择[tableView endEditing];
保存。它实际上触发了textFieldShouldEndEditing:
方法。它会保留模型字符串以防用户点击取消。
感谢您的回答。在调用保存之前,我正在使用:[self.tableView endEditing:YES];但它不起作用。但 Phillip Mills 的解决方案是有效的。但是我的文本视图有问题! textfield 已排序,但 textview 仍处于待处理状态。谢谢
你知道为什么 textview 方法没有触发吗? a) - (void)textViewDidChange:(UITextView *)textView b) - (void)textViewDidEndEditing:(UITextView *)textView c) - (BOOL)textViewShouldBeginEditing:(UITextView *)textView d) - (BOOL)textView:(UITextView * )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string ??如果我滚动我的表格视图几次,那么我会在 textview 中丢失我输入/修改的文本!!!但文本字段工作正常。谢谢
[self.view endEditing:YES] 触发 textFieldShouldEndEditing 但您需要手动调用 Save 而不使用条件:if (!self.editing) [self save]
textViewField.delegate = self; --> 忘记设置委托了!现在它工作正常。以上是关于UITableViewController 保存问题的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewController 中的 UITableViewCells 之间进行通信
为啥我不能使用“List”作为 UITableViewController 子类的类名?
UITableViewController 中的 UITextField
为啥我的 UITableViewController 页脚高度不会改变?