我有一个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";
}
答案 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中修复拼写错误