2012-02-01 68 views
2

只是有一個關於UILabel類的問題。我知道UITextField控件在編輯發生變化時有一個委託,但我想知道UILabel是否有類似的字段。我問的原因是,我的應用程序在網絡中查詢某些信息何時發生變化並進行相應更新,並且我不想在我的更新中硬編碼我想觀看的標籤名稱,只是爲了執行一項小任務關於它。如果它有一個委託或類似的東西,以便我的班級可以監控這個信息,那將是非常好的。iOS如何找出UILabel是否改變了它的文本

如果沒有,那麼任何意見將不勝感激。

回答

19

您可以使用志願找出或執行一些代碼當文本的變化是這樣的:

[somelabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL]; 

,然後聽這樣

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 

    NSLog(@"the text changed"); 
} 
變化
+0

這對我很好,謝謝你。現在我可以在沒有硬編碼檢查的情況下將所有內容在後臺處理。 – Seb 2012-02-01 23:58:58

1

A UILabel不能在沒有您的代碼的情況下更改其文本,那麼爲什麼會有一個委託在更改時告訴您?您已經知道... UITextField有一個,因爲用戶可以編輯文本,以便在更改時告訴您。

所以基本上,不,沒有委託方法,你甚至不應該需要一個。

+0

我基本存儲控制清單在字典中,並根據數據包的發送情況,我使用該字典來檢查字典以取出我的控件以更新它。唯一的另一種方式是當我拔出控件時,我檢查控件的名稱是否匹配。我不想做的事情。 – Seb 2012-02-01 16:44:21

+2

但我的意思是,你正在更新標籤的文本嗎?所以你知道它何時發生變化。儘管@Artanis已經向您展示了KVO觀察變化​​的方式。 – mattjgalloway 2012-02-01 17:03:10

相關問題