2013-07-22 116 views
3

我在設置按鈕的標題標籤時遇到問題。基本上我有2個屏幕,他們都有這個按鈕,但他們都寫有不同的「數字」。發生的事情是,在按鈕標題準確反映我所在的屏幕之前,有一個非常明顯的延遲1-2秒。我試圖把[self.button reloadInputViews];,但它仍然不會重新加載它,我仍然得到延遲。UIButton標題標籤延遲

[self.button setTitle:[NSString stringWithFormat:@"%d", [stringValue integerValue]] 
      forState:UIControlStateNormal]; 

有人知道如何強制按鈕刷新它的標題標籤嗎?謝謝您的幫助!

編輯:用於上下文更多代碼

 self.guestsField = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    self.guestsField.frame = CGRectMake(self.guestsLabel.frame.origin.x + self.guestsLabel.frame.size.width, 100, 40, 30); 
    self.guestsField.titleLabel.font = [UIFont systemFontOfSize:20]; 
    [self.guestsField addTarget:self action:@selector(pressGuestsField:) forControlEvents:UIControlEventTouchDown]; 
    [self.view addSubview:self.guestsField];' 

myFunction的{
的NSDictionary *字典= [通知USERINFO];

if ([dict count] > 0) 
    { 
     [self.guestsField setTitle:[NSString stringWithFormat:@"%d", [GetOrder.NumberOfGuests integerValue]] forState:UIControlStateNormal]; 
    } 

}

固定它:是在不同的線程運行myFunction的。只是做了主線程中的setTitle dispatch_sync(dispatch_get_main_queue(), ^{

+2

你在哪裏調用這段代碼,以及之前和之後發生了什麼? UI線程會自動更新標題,但如果它忙於做其他事情,那麼您必須等待。 –

+0

我同意@MarcusAdams ...東西在咀嚼干擾UI的主線程。 – Dan

+0

我在一個函數內部調用這個代碼,該函數一旦從一個屏幕切換到另一個屏幕就會運行。 –

回答

1

如果您在等待將標籤設置爲從服務器檢索數據之後,那麼看起來這就是導致延遲的原因。評論你的網絡代碼,看看你的標籤是否立即更新。

+0

仍然延遲。但我注意到的一件事是,當我從屏幕1切換到屏幕2時,以及在它將標題更改爲「2」之前,如果我單擊該按鈕,它幾乎立即將其更改爲2。 :S –

+1

請張貼一些代碼。不能真正幫助你看到你在做什麼。 – JonahGabriel