UITextField在UITableViewCell中并在模态视图中进行验证

时间:2012-07-24 14:03:45

标签: iphone uitableview delegates uitextfield

我正在使用this stackoverflow posting中描述的方法从文本字段中检索值。我的问题是tableview以模态方式呈现,我有一个save按钮,用于验证输入并存储它。

问题是,当用户点击textFieldDidEndEditing(=保存按钮,关闭模态视图)时,UIBarButtonItem方法

在这种情况下(当用户想要保存输入时)我想验证它。但这些值存储在textFieldDidEndEditing的属性中。由于未调用此方法,我无法正确验证输入值。

有人对此有提示或解决方案吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您应该为文本字段分配唯一标记号,然后跟踪当前处于活动状态(即使用int iVar存储活动文本字段标记值)的textFieldDidBeginEditing代理以及用户点击时保存时,你应该通过它的标签值得到最后一个文本字段,然后是文本值,这样你就可以验证它。

答案 1 :(得分:0)

好的,我们走了:

感谢@Lefteris和他存储当前索引的想法。由于我无法将索引存储到tag属性中,因此我决定存储活动indexPath以及活动textField。 (我知道,对UITextField的引用已足够,但我需要其他东西)

首先,我添加了这两个属性:

@property (nonatomic, strong) NSIndexPath *activeIndexPath;
@property (nonatomic, strong) UITextField *activeTextField;

然后我实施了textFieldDidBeginEditing:的{​​{1}}和textFieldDidEndEditing:

UITextFieldDelegate

- (void)textFieldDidBeginEditing:(UITextField *)textField { NSIndexPath *indexPath = (NSIndexPath*)[self.tableView indexPathForCell:(UITableViewCell*)[[textField superview] superview]]; self.activeTextField = textField; self.activeIndexPath = indexPath; } - (void)textFieldDidEndEditing:(UITextField *)textField { NSString *input = textField.text; //assuming values from input textfield into corresponding properties [self assumeInput:input withIndexPath:self.activeIndexPath]; self.activeTextField = nil; self.activeTextField = nil; } 中,我使用textFieldDidEndEditing:方法将值存储到我的属性中(例如self.firstNameself.lastName等等...)。 / p>

在我的[self assumeInput:input withIndexPath:self.activeIndexPath]; - 方法中,我存储了当前有效saveAction的值。

TextField

......那就是它!

希望它有所帮助!感谢@Lefteris的投入。

最佳, 克里斯