0

标签未显示所需的值,但nslog显示了标签应显示的正确值。标签显示一个充满数字的大数字。是不是我做错了什么,相关代码如下图。

它在顶部看起来如何...

@implementation ORPlayerResults
{ 
    SKLabelNode *numberOfPointsLabel;

    NSInteger newPoints;
    NSString *addingNewPointNumberStored;
}

didMoveToView...

-(void)didMoveToView:(SKView *)view
{    
    // adding the label
    [self addChild:[self pointsTotalLabel]];
}

关于标签的信息

-(SKLabelNode *)pointsTotalLabel
{
    numberOfPointsLabel = [[SKLabelNode alloc] initWithFontNamed:@"Arial"];
    numberOfPointsLabel.text = @"Points Achieved: 0";
    numberOfPointsLabel.fontSize = 35;
    numberOfPointsLabel.fontColor = [SKColor whiteColor];
    numberOfPointsLabel.position = CGPointMake((self.size.width * 0.5)-200, self.size.height - 200);
    numberOfPointsLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeLeft;

    return numberOfPointsLabel;
}

下面的文本标签没有显示正确的值,而是显示了一个错误的充满数字的大数字。nslog显示我想要的结果。

-(void)pointsAchieved
{
    newPoints = [[NSUserDefaults standardUserDefaults] integerForKey:kORNewPoints];
    addingNewPointNumberStored = [NSString stringWithFormat:@"%li", (long)newPoints];
    numberOfPointsLabel.text = [NSString stringWithFormat:@"Points Achieved: %ld", (long)addingNewPointNumberStored];

    NSLog(@"Points accumulated is: %@", addingNewPointNumberStored);
}
4

2 回答 2

2

我不记得他们的名字,但你把你的 %@, %ld 东西弄混了。

您的 NSLog 使用 %@ 并且有效。

您的 label.text 使用 %ld 而没有。

你把你的数字放在一个字符串中,然后将该字符串添加到 label.text 中,就好像它仍然是一个数字一样。因此,您还需要从该语句中删除 (long)。

于 2014-12-29T23:47:00.753 回答
1

您对格式化字符串中的不同类型感到困惑,它应该如下所示:

-(void)pointsAchieved
{
newPoints = [[NSUserDefaults standardUserDefaults] integerForKey:kORNewPoints];
addingNewPointNumberStored = [NSString stringWithFormat:@"%d", newPoints];
numberOfPointsLabel.text = [NSString stringWithFormat:@"Points Achieved: %@", addingNewPointNumberStored];

NSLog(@"Points accumulated is: %@", addingNewPointNumberStored);
}
于 2014-12-30T00:26:04.977 回答