0

我有一个从“0”开始的 UILabel,然后随着游戏的进行,我每次按下按钮时都会调用下面的代码来将“1”添加到分数中。这一切都很好。

playerOneScore.text = [NSString stringWithFormat:@"%d",[playerOneScore.text intValue]+1];

我的问题是当游戏结束并且用户按下“重播”按钮时。此重播按钮通过调用此按钮将标签设置回“0”。

playerOneScore.text = @"0";

但是当游戏进行时,我的标签从“0”跳到最初停止的位置+1。我在这里做错了什么?没有意义。

任何帮助将不胜感激!谢谢!

请求更多代码(简化):

- (void)viewDidLoad
{
    playerOneScore.text = @"0";
}

-(IBAction)touchDown {
    if (playerOneTurn == YES) {

        if (button1.touchInside == YES) {

        playerOneScore.text = [NSString stringWithFormat:@"%d",[playerOneScore.text intValue]+1];

        }
    }
}


-(void) replayGame {

        playerOneScore.text = @"0";
}
4

1 回答 1

3

不知道发生了什么,但我建议使用单独的 NSInteger 属性来跟踪分数。然后覆盖属性设置器以更新标签文本。

将属性添加到您的界面或私有类别:

@property (nonatomic, assign) NSInteger score;

然后覆盖设置器:

- (void)setScore:(NSInteger)value {
    _score = value;
    playerOneScore.text = [NSString stringWithFormat:@"%d", value];
}

然后在您的操作中,使用新属性更新分数和标签:

-(IBAction)touchDown {
    if (playerOneTurn == YES) {
        if (button1.touchInside == YES) {
            self.score += 1;    
        }
    }
}

请注意,我尚未编译或测试此代码,但它应该很接近。

编辑:修复了二传手中的错字

于 2013-08-29T16:50:51.893 回答