我使用中所描述的方法这个计算器张贴从文本字段检索值。 我的问题是,tableview中有模式地提出,我有一个save
按钮验证输入和存储。
的问题是, textFieldDidEndEditing
当用户点击的方法不被调用UIBarButtonItem
(=保存按钮,其封闭模态的视图)。
在这种情况下(当用户想保存输入),我想验证它。 但值存储在性能textFieldDidEndEditing
。 由于这样的事实,这种方法不叫,我不能正确验证输入值。
有没有人有这样的提示或解决方案?
提前致谢!
您应该分配唯一的标签号码与您的文本字段,然后跟踪其上当前处于活动状态(即使用一个INT伊娃存储活跃文本字段变量值)在textFieldDidBeginEditing
代表和当用户点击保存,你应该得到的通过这最后的文本框的标签值,那么它的文本值,所以你可以验证它。
好了,我们开始吧:
由于@Lefteris,他与存储当前指数的想法。 由于这样的事实,我不能索引存储到tag
属性,我决定来存储活动indexPath
和额外有效textField
。 (我知道,到了一个参考UITextField
就足够了,但我需要它的其他的东西)
首先,我增加了这两个属性:
@property (nonatomic, strong) NSIndexPath *activeIndexPath;
@property (nonatomic, strong) UITextField *activeTextField;
然后,我实现textFieldDidBeginEditing:
和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
通过使用该方法,等等...) [self assumeInput:input withIndexPath:self.activeIndexPath];
。
在我saveAction
-方法我存储从当前活动的价值TextField
。
- (IBAction)saveButtonClicked:(UIBarButtonItem *)sender
{
//assuming input from active field (didEndEditing _not_ called right now!)
[self assumeInput:self.activeTextField.text withIndexPath:self.activeIndexPath];
//test output
NSLog(@"firstName: %@", self.firstName);
NSLog(@"lastName: %@", self.lastName);
NSLog(@"email: %@", self.email);
...
}
......这就是它!
希望能帮助到你! 由于@Lefteris为他输入。
最好的,克里斯