我正在尝试为我的测验应用创建一个得分。分数是我页面上的标签,我使用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];
}
这对我有用,但我所做的是硬编码所以我不得不把它放在每个按钮事件上。此外,由于我所做的是硬编码,我非常确定有更好的方法。
答案 0 :(得分:1)
仔细查看else
条件中的此代码:
CorrectPage *update;
strDefaultScore = update.updateScore;
score.text = strDefaultScore;
您的update
对象未初始化,因此无法响应任何消息。这会更好:
CorrectPage *update = [[CorrectPage alloc] init];
但是你需要以某种方式设置updateScore
值。
此外,QuestionPage *quiz;
也有同样的问题。