通过文本字段检查用户输入

时间:2012-04-23 21:04:32

标签: cocoa fast-enumeration

我现在已经挣扎了好几天了;我的应用程序有一个uitextfields图表来表示图片的标签。我想根据字典(答案)检查用户输入,如果正确,将分数增加1。 我按照“硬编码”的方式工作了。每个textfield.text查询每个都有自己的if语句,但如果可能的话,我想要一个更好,更可重用的方法? 到目前为止我已经尝试过了:

- (IBAction)checkAnswers:(UITextField *)textField
{
// array for each textfield
allTextfields = [[NSArray alloc] initWithObjects:eyepiece, objectiveLenses, focussingKnobs, stage, mirror, nil];
// array for each UIImageView
allTicks = [[NSArray alloc] initWithObjects:eyepieceTick, objectiveTick, focussingTick, stageTick, mirrorTick, nil];
UIImage *image = [UIImage imageNamed:@"Tick.png"];

for (textField in allTextfields) {

    if ([textField.text isEqualToString:[[microscopeBrain.microscopeDictionary valueForKey:theTextfieldTag] valueForKey:@"Answer"]]) {
        [[allTicks objectAtIndex:textField.tag] setImage:image];
        x++;
      textField.enabled = NO;
       NSLog(@"%@", microscopeBrain.microscopeDictionary);
    //    NSLog(@"%@", [[microscopeBrain.microscopeDictionary valueForKey:theTextfieldTag] valueForKey:@"Answer"]);
    }

    finalMicroscopeScore = [[NSString alloc] initWithFormat:@"%i", x];
    microscopeScoreLabel.text = [[NSString alloc] initWithFormat:@"%i", x];

    }
    }

问题是,即使答案是在错误的文本字段中,只要一个是正确的,它们都会显示为正确,这有点令人尴尬! 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试将valueForKey:theTextFieldTag更改为valueForKey:textField.tag并查看是否有帮助。你没有展示如何获得theTextFieldTag的值,所以我不确定这是不是问题。