我正在尝试为我的测验应用程序创建一个评分。分数是我页面上的一个标签,我使用 3 个不同的页面和一个分数标签。一个是测验,然后是正确的页面和不正确的页面。最初,我在测验页面上将标签的值设置为 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 知之甚少,我一直在网上搜索这方面的帮助,但找不到任何帮助,所以老实说,我不知道该怎么做。
更新:我已经设法弄清楚了。我移动了按钮事件上的代码,所以现在看起来像这样。
-(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];
}
这对我有用,但我所做的是硬编码的,所以我必须把它放在每个按钮事件上。此外,由于我所做的是硬编码,我很确定有更好的方法来做这件事。