我试图通过使用计时器来更新其值来每秒替换字符串。通常我可以很容易地替换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
}
如果我只是将timer方法的最后一行复制粘贴到setupLabels方法中,它会像普通的那样改变字符串,但在timer方法中它不会做任何事情。我已经登录,以确保计时器正在运行,它肯定是。谢谢你的帮助!
在decreaseTimeRemaining
中,您创建了一个名为timeRemainingString
的局部变量,但此后您从未使用它来更新标签。此外,您正在创建一个全新的标签,而不是更新现有的标签。
-(void)decreaseTimeRemaining{
timeRemaining--;
NSString *timeRemainingString = [NSString stringWithFormat:@"%i", timeRemaining];
[_varyingParameterLabelValue setString:timeRemainingString];
}