2012-09-04 129 views
5

我今天有點困惑,今天發現以下內容在嘗試更改UIButton上顯示的文本時不起作用。爲UIButton設置titleLabel

// 001 
[[[self button] titleLabel] setText:@"Peanuts"]; 

我想我知道爲什麼,但我只是想確認我的想法。 001確實設置了titleLabel文本屬性,但是作爲其UILabelUIButton的子視圖),它不會導致UI被重繪。這會導致UILabel文本屬性的內部更改,但可惜在UI中沒有視覺更改。

// 002 
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

這似乎是該方法的setTitle:forState是要走的正確途徑,它有要求一國的額外開銷但並調用UI重繪,因爲它直接呼籲UIButton。我的問題是,002是做這件事的正確方法,除非我做了完全錯誤的事情,否則看起來是這樣。

回答

7

你是對的。

[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal]; 

是應該設置按鈕標題的方式。這使您可以控制您的按鈕在所有不同控制狀態下的樣子。

從文檔:

在一般情況下,如果沒有一個國家指定的屬性,則默認爲 使用UIControlStateNormal值。如果沒有設置 UIControlStateNormal的值,則屬性默認爲 系統值。因此,至少應該將 的值設置爲正常狀態。

+0

謝謝,非常感謝。 – fuzzygoat

相關問題