2012-12-19 43 views
2

我創建了一個UIButton並使用titleLable.text來設置文本,但是文本在按鈕中看不到,所以我用setText方法替換它,並且顯示文本,我只想知道爲什麼titleLable.text不工作titleLable.text不能正常工作

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [email protected]"text"; 

然後使用方法如下

[button setTitle:@"text" forState:UIControlStateNormal]; 

回答

4

因爲titleLabelreadonly財產。

titleLabel

,顯示currentTitle屬性的一個 按鈕的值的圖。雖然這個屬性是隻讀的,它自己的屬性是 讀/寫(只讀)

@property(nonatomic, readonly, retain) UILabel *titleLabel>

討論

。使用這些屬性主要用於配置按鈕的文本 。例如:

UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

button.titleLabel.font = [UIFont systemFontOfSize: 12];

button.titleLabel.lineBreakMode = UILineBreakModeTailTruncation;

不要使用標籤對象設置文本顏色或陰影顏色。 相反,使用setTitleColor:forState和 setTitleShadowColor:forState:該類的方法可以使那些 更改。

titleLabel屬性返回一個值,即使該按鈕還沒有顯示出 。系統 按鈕的屬性值爲零。

可用性

Available in iOS 3.0 and later. 

宣佈UIButton.h

請參考UIButton Class瞭解更多詳情。

+0

所以你的意思是titleLabel屬性僅用於存儲文本,但不用於顯示按鈕中的文本 –

+1

@VigneshKumar:「設置文本的原因不起作用的是,按鈕本身將在內部設置文本,具體取決於控制狀態,這將覆蓋你設置爲文本的任何東西。「 –

+0

感謝您的回答 –

1

Midhun的回答雖然完全正確,但並未回答問題。正如他所說,標籤屬性是隻讀的,但屬性不包括文本屬性。

設置文本不起作用的原因是,按鈕本身將根據控件狀態在內部設置文本。這將覆蓋您設置爲文本的任何內容。

這就是爲什麼你用setTitle:forControlState:來代替。除非另有說明,否則該按鈕將爲所有其他狀態使用正常狀態的值,但如果您從未爲任何控制狀態設置標題,則不會顯示標籤。

+0

感謝您的回答 –