クイズアプリのスコアを作成しようとしています。スコアは私のページのラベルであり、スコアラベル付きの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];
}
それは私にとってはうまくいきましたが、私がしたことはハードコーディングされていたので、すべてのボタンイベントにこれを配置する必要がありました。また、私が行ったことはハードコーディングされているため、より良い方法があると確信しています。