0

クイズアプリのスコアを作成しようとしています。スコアは私のページのラベルであり、スコアラベル付きの3つの異なるページを使用しています。1つはクイズで、次に正しいページと間違ったページです。最初に、クイズページでラベルの値を0に設定しました。次に、正解を選択すると、対応するページに移動してスコアを更新します。したがって、0から1になります。次に、現在1のラベルが付いた質問ページに戻り、答えが再び正しければ2に更新されます。私の問題は、私のラベルが更新されていないように見えることです。スコアは0から始まり、1を追加しますが、その後、スコアは1に固定されます。これが私のコードです。確かに、使用しているロジックに問題があるので、すべての助けに本当に感謝しています。

*質問ページ

if(score.text == @"")
{
    int i = 0;
    strDefaultScore = [[NSString alloc] initWithFormat:@"%i", i];
    score.text = strDefaultScore;
}
else
{
    CorrectPage *update = [[CorrectPage alloc] init];
    strDefaultScore = update.updateScore;
    score.text = strDefaultScore;
}

次に、CorrectPageのコードを示します。

QuestionPage *quiz = [[QuestionPage alloc]init];
int i = 1;
int j = [quiz.strDefaultScore intValue];
int sum = i + j;
updateScore = [[NSString alloc] initWithFormat:@"%i", sum];
currentScore.text = updateScore;

NSLogを使用して両方のページのstrDefaultScoreの値を確認しようとしましたが、どちらも0を返します。そのため、正解がいくつあってもスコアは1になります。これを修正するにはどうすればよいですか?

私はObjective-Cの使用に関する知識がほとんどないか、まったくありません。これについてのヘルプをWebで検索していますが、何も見つからないため、正直なところ、これをどのように行うかわかりません。

更新:私はそれを理解することができました。ボタンのイベントのコードを移動したので、次のようになります。

-(IBAction)btn1 {
//Redirect to the next page
CorrectPage *correct = [[CorrectPage alloc]initWithNibName:@"CorrectPage" bundle[NSBundle mainBundle]]; 
[self.navigationController pushViewController: correct animated:YES];

//Update the value of score    
int newScore = [score.text integerValue];
int sum = newScore + 1;
updatedScore = [[NSString alloc]initWithFormat:@"%i", sum];
score.text = updatedScore;

//Pass the value of new score on the next page
[correct.currentScore setText: score.Text];
}

それは私にとってはうまくいきましたが、私がしたことはハードコーディングされていたので、すべてのボタンイベントにこれを配置する必要がありました。また、私が行ったことはハードコーディングされているため、より良い方法があると確信しています。

4

1 に答える 1

1

else条件のこのコードをよく見てください。

CorrectPage *update;
strDefaultScore = update.updateScore;
score.text = strDefaultScore;

updateオブジェクトが初期化されていないため、メッセージに応答できません。これはより良いでしょう:

CorrectPage *update = [[CorrectPage alloc] init];

updateScoreただし、何らかの方法で値を設定する必要があります。

また、QuestionPage *quiz;同じ問題があります。

于 2013-01-22T06:10:39.137 に答える