更新UILabel并清除它?

时间:2013-08-29 16:24:56

标签: objective-c uilabel

我有一个UILabel,我从" 0"开始然后随着我的游戏进程,我调用下面的代码添加" 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";
}

1 个答案:

答案 0 :(得分:3)

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

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

@property (nonatomic, assign) NSInteger score;

然后覆盖setter:

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

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

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

请注意,我没有编译或测试过这段代码,但它应该很接近。

编辑:在setter中修复拼写错误