2012-04-23 11 views
0

私はこれでかなりの数日間これに苦労しました。私のアプリには画像のラベルを表すためのuitextfieldsを持つ図があります。私は辞書(回答)に対してユーザー入力をチェックし、正しければスコアを1つ増やしたいと思っています。 textfield.textクエリーのそれぞれを独自の可能であれば、私はより良く、より再利用可能な方法を望んでいますか? 私はこれまでのところ、これを試してみた:テキストフィールドを使用してユーザー入力を確認しています

- (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

"theTextFieldTag"とは何ですか?ループを通過するたびに辞書の同じ値をチェックしているようです。顕微鏡の辞書(またはその一部)を投稿すると、構造を見ることができます。 – rdelmar

+0

もう一度@rdelmarありがとう、あなたは私を救済し続ける! TheTextFieldTagは、 '現在編集中の'テキストフィールドのタグの文字列表現です。私は0から4まで(5つのテキストフィールドのために)、辞書は0から4までの初期キーとそれから照合するための "答え"キーで設定されています。問題はランダムな「間違った」答えに問題がないので、テキストフィールドのすべてに対して可能な正解すべてを循環させているということです。 –

+0

明確にするために、私が「犬」を入れると、それは印をつけませんが、すべてのボックスに正しい「接眼レンズ」を置くと正しいと言います。あるいは、正しい答えの「ステージング」または他の何か。 1つが正しい限り、それは他の人に正しいものをマークします... –

答えて

1

valueForKey:theTextFieldTagをvalueForKey:textField.tagに変更し、それが役立つかどうかを確認してください。 theTextFieldTagの値をどのように取得するかはわかりません。問題があるかどうかはわかりません。

+0

ありがとう、私はあとで試してみましょう。私はNSStringを使用します* theTextfieldTag = [[NSString alloc] initWithFormat:@ "%i"、textfield.tag]; –

+0

Textfield.tagは整数であるため、エラーとなります。これは、なぜ私はそれをラップしたのですか(それは単語ですか?)上記のnsstringにあります。私はループにnslogを入れ、0のインスタンスを5つ、1のうちの5つを最大4つのインスタンスに渡します。これは特定のものとは対照的に辞書全体を通っていると思います。 –

+0

代わりにnsenumeratorを使うべきでしょうか?混乱している! –

関連する問題