在objective-c中评分测验游戏

时间:2013-01-22 05:48:47

标签: objective-c xcode

我正在尝试为我的测验应用创建一个得分。分数是我页面上的标签,我使用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];
}

这对我有用,但我所做的是硬编码所以我不得不把它放在每个按钮事件上。此外,由于我所做的是硬编码,我非常确定有更好的方法。

1 个答案:

答案 0 :(得分:1)

仔细查看else条件中的此代码:

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

您的update对象未初始化,因此无法响应任何消息。这会更好:

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

但是你需要以某种方式设置updateScore值。

此外,QuestionPage *quiz;也有同样的问题。