-1

我试图通过使用计时器更新其值来每秒替换一个字符串。通常我可以很容易地替换一个 NSString

myString = [CCLabelTTF labelWithString:varyingParameterLabelString fontName:@"Helvetica" fontSize:14];

例如,但由于某种原因,它不会更新我的 NSString 的值。以下是我正在尝试做的事情。

@implementation Grid
{
    NSTimer *timeRemainingTimer;
    CCLabelTTF *_varyingParameterLabelValue;
}


-(void)setupLabels{
    int timeRemaining = 30;
    varyingParameterLabelValueString = [NSString stringWithFormat:@"%i", timeRemaining];
    timeRemainingTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(decreaseTimeRemaining) userInfo:nil repeats:TRUE];
    _varyingParameterLabelValue = [CCLabelTTF labelWithString:varyingParameterLabelValueString fontName:@"Helvetica" fontSize:20];
[self addChild:_varyingParameterLabelValue];
}


-(void)decreaseTimeRemaining{
    timeRemaining--;
    NSString *timeRemainingString = [NSString stringWithFormat:@"%i", timeRemaining];
    _varyingParameterLabelValue = [CCLabelTTF labelWithString:@"timeRemainingString" fontName:@"Helvetica" fontSize:20];
//Still reads 30 after this runs
}

如果我只是将计时器方法的最后一行复制并粘贴到 setupLabels 方法中,它会像平常一样更改字符串,但在计时器方法内部它什么也不做。我已经登录以确保计时器正在运行,而且确实如此。谢谢您的帮助!

4

1 回答 1

2

decreaseTimeRemaining您创建一个名为 的局部变量timeRemainingString时,您从不使用它来更新标签。此外,您正在创建一个全新的标签,而不是更新现有的标签。

-(void)decreaseTimeRemaining{
    timeRemaining--;
    NSString *timeRemainingString = [NSString stringWithFormat:@"%i", timeRemaining];
    [_varyingParameterLabelValue setString:timeRemainingString];
}
于 2014-06-24T03:08:51.917 回答