通过titleLabel.text属性更改UIButton的标题不起作用:为什么?

时间:2016-07-24 15:18:00

标签: ios objective-c uibutton

我知道这个问题必须先回答,但我仍然想知道为什么第一行代码无法改变UIButton的标题,而第二行则无法改变。除了第一行是从BigNerdRanch的Objective-C书中复制的......我将其作为可行的样本。

self.assetTypeButton.titleLabel.text=@"foo"; //doesn't work

[self.assetTypeButton setTitle:@"foo" forState:UIControlStateNormal]; //this works and button title is changed.

1 个答案:

答案 0 :(得分:0)

来自Apple TitleLabel and setTitle

的更好解释

<强> titleLabel

UIButton *button  = [UIButton buttonWithType: UIButtonTypeSystem];
button.titleLabel.font            = [UIFont systemFontOfSize: 12];
button.titleLabel.lineBreakMode   = NSLineBreakByTruncatingTail;
  

请勿使用标签对象设置文本颜色或阴影颜色。   相反,使用setTitleColor:forState:和   setTitleShadowColor:forState:这个类的方法来制作它们   变化。

     

即使按钮没有,titleLabel属性也会返回一个值   已显示。系统的属性值为nil   的按钮。

<强>的setTitle

  

使用此方法设置按钮的标题。标题你   指定从按钮的关联标签中派生其格式   宾语。如果您为该标题设置了标题和属性标题   按钮,该按钮更喜欢使用属性标题   之一。

     

至少应设置正常状态的值。如果一个   title没有为某个州指定,默认行为是使用   与UIControlStateNormal状态关联的标题。如果值为   未设置UIControlStateNormal,则属性默认为a   系统价值。