0

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

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

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 回答