我正在使用this stackoverflow posting中描述的方法从文本字段中检索值。我的问题是tableview以模态方式呈现,我有一个save
按钮,用于验证输入并存储它。
问题是,当用户点击textFieldDidEndEditing
(=保存按钮,关闭模态视图)时,UIBarButtonItem
方法不。
在这种情况下(当用户想要保存输入时)我想验证它。但这些值存储在textFieldDidEndEditing
的属性中。由于未调用此方法,我无法正确验证输入值。
有人对此有提示或解决方案吗?
提前致谢!
答案 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.firstName
,self.lastName
等等...)。 / p>
在我的[self assumeInput:input withIndexPath:self.activeIndexPath];
- 方法中,我存储了当前有效saveAction
的值。
TextField
......那就是它!
希望它有所帮助!感谢@Lefteris的投入。
最佳, 克里斯