【发布时间】:2014-02-20 21:44:39
【问题描述】:
我整天都在做这个,只是无法理解它。在我的应用程序的一个表单上,我使用-[UITextFieldDelegate textFieldDidEndEditing]: 来注册任何错误并将它们存储在NSMutableArray 实例变量formErrors 中。
我打算在按下提交按钮时使用formErrors,或者在表单出现错误时禁用该按钮。问题是错误计数无处不在。我刚刚让自己感到困惑,因为您可以看到我的代码在哪里增加和减少,以便尝试控制正在发生的事情,但只会让自己更加困惑。
错误消息会像这样放在formErrors 上:
-(void)textFieldDidEndEditing:(UITextField *)textField {
if ( textField == [self nameField] ) {
if ( ([[textField text] isEqualToString:@""]) ) {
[formErrors addObject:@"What is your name?"];
errorCount++;
} else {
errorCount--;
if ( ([[textField text] length] < 2) || ([[textField text] length] > 20) ) {
[formErrors addObject:@"Name must contain a minimum of 2 and a maximum of 20 characters only."];
errorCount++;
} else {
errorCount--;
if ([[textField text] rangeOfCharacterFromSet:alphaSet].location != NSNotFound) {
[formErrors addObject:@"Name must contain letters and spaces only."];
errorCount++;
}
}
}
}
if (textField == [self ageField]) {
if ( ([[textField text] isEqualToString:@""]) ) {
[formErrors addObject:@"How old are you?"];
errorCount++;
} else {
errorCount--;
if ( ([[textField text] intValue]) < 1 || ([[textField text] intValue] > 120) ) {
[formErrors addObject:@"Please enter an age using a number between 1 and 120."];
errorCount++;
} else {
errorCount--;
if ([[textField text] rangeOfCharacterFromSet:numericSet].location != NSNotFound) {
[formErrors addObject:@"Age must be given in numbers."];
errorCount++;
}
}
}
}
我的实例变量:
{
NSMutableArray *formErrors;
}
然后在viewDidLoad:中初始化
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
formErrors = [[NSMutableArray alloc] init];
然后在prepareForSegue: 我有一些临时代码来检查一切是否正常:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
int errCount = [formErrors count];
// check if all textfield values are filled in if not then disallow form submit
for (NSString *error in formErrors) {
NSLog(@"Total %d errors, \n Error Message: %@", errCount, error);
}
我要做的就是在输入和离开字段时检查是否有任何错误;如果有,只需将错误消息存储在formErrors 中,这样我就可以在prepareForSegue: 中做我需要做的事情。这甚至是正确的方法吗?我尝试过很多不同的方法,但只是继续循环。
提交按钮链接到我的 segue,也是一个出口,所以我可以随意启用和禁用它。
帮助将不胜感激 亲切的问候
【问题讨论】:
标签: objective-c forms cocoa-touch ios7 uitextfield