2013-08-29 60 views
0

我有一個UILabel,我從「0」開始,然後當我的遊戲進行時,我會調用下面的代碼,在每次按下按鈕時爲分數添加「1」。這一切工作正常。更新UILabel並清除它?

playerOneScore.text = [NSString stringWithFormat:@"%d",[playerOneScore.text intValue]+1]; 

我的問題是當遊戲結束並且用戶按下「Replay」按鈕時。此重播按鈕通過調用此參數將標籤重新設置爲「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

您需要展示更多代碼。 – fumoboy007

+0

你去@ fumoboy007簡化它有點容易。這很奇怪。在我「replayGame」後,然後按下+1按鈕,標籤跳轉到超高數字? –

+0

@SeanHerman:嘗試將其設置爲零,然後設爲0以確保舊值被移除。 –

回答

3

不知道這是怎麼回事,但我建議使用一個單獨的屬性NSInteger的跟蹤得分。然後重寫屬性設置器以更新標籤文本。

的屬性添加到您的接口或私人類別:

@property (nonatomic, assign) NSInteger score; 

然後覆蓋二傳手:

- (void)setScore:(NSInteger)value { 
    _score = value; 
    playerOneScore.text = [NSString stringWithFormat:@"%d", value]; 
} 

然後在你的行動,使用新屬性更新得分和標籤:

-(IBAction)touchDown { 
    if (playerOneTurn == YES) { 
     if (button1.touchInside == YES) { 
      self.score += 1;  
     } 
    } 
} 

請注意,我沒有編譯或測試此代碼,但它應該是關閉的。

編輯:固定錯字