0

標籤不顯示所需的值,但nslog顯示應該由標籤顯示的正確值。標籤顯示一個充滿數字的大數字。我做錯了什麼?,相關代碼如下所示。顯示錯誤值的標籤,而NSLog在SpriteKit中顯示正確的值

它的外觀在頂部...

@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); 
} 
+0

我認爲使用dispatch_get_main_queue()可以解決這個問題。 – Roecrew

+0

@Roecrew代碼的外觀如何?我從來沒有使用dispatch_get_main_queue()。 –

回答

2

我不記得他們的名字,但你已經混了您%@%ld的一樣的東西。

您的NSLog使用%@並且正常工作。

您的label.text使用%ld而不是。

你把你的號碼放在一個字符串中,然後將該字符串添加到label.text,就好像它仍然是一個數字。 所以你還需要從該語句中刪除(長)。

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); 
}