2012-04-23 55 views
0

我一直在为此奋斗了好几天;我的应用程序有一个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]; 

    } 
    } 

的问题是,即使答案是错误的文本框,只要是正确的,他们都将显示为正确的,这是一种尴尬! 任何帮助将非常感激。

+0

什么是“theTextFieldTag” - 它看起来像你每次通过循环检查字典中的相同值。这将有助于如果您发布microscopeDictionary(或其一部分),以便我们可以看到结构。 – rdelmar 2012-04-24 00:04:24

+0

再次感谢@rdelmar,你一直在救我! TheTextFieldTag是“正在编辑”文本字段标记的字符串表示形式。我从0到4(对于5个文本字段)使用它们,字典的初始密钥为0到4,然后在其中检查“答案”键。我认为问题在于,它以某种方式循环所有文本字段的所有可能正确答案,因为随机“错误”答案没有问题。 – 2012-04-24 09:45:57

+0

为了澄清,如果我放入“狗”,它不会给出标记,但如果我把“目镜”正确地放在所有的盒子中,就会说它是正确的。或“阶段”或任何其他正确的答案。只要一个是正确的,它将标记其他人正确... – 2012-04-24 14:00:02

回答

1

尝试更改valueForKey:theTextFieldTag valueForKey:textField.tag,看看是否有帮助。你没有说明你如何得到TextFieldTag的价值,所以我不确定这是否是问题所在。

+0

非常感谢你,我会在稍后尝试。我使用NSString * theTextfieldTag = [[NSString alloc] initWithFormat:@“%i”,textfield.tag];我相信,但如果它有什么不同,我会转贴:)再次感谢 – 2012-04-24 15:36:28

+0

Textfield.tag提供了一个错误,因为它是一个整数,我相信,这就是为什么我把它包装在一个nsstring中(就是这个词?)如上。我把一个nslog放到循环中,它给出5个0,5的1到4,这就是为什么我认为它是通过整个字典而不是特定的字典 – 2012-04-24 16:22:46

+0

也许我应该使用nsenumerator?如此迷茫! – 2012-04-24 17:07:32