titleLable.text不起作用

时间:2012-12-19 09:07:55

标签: ios uibutton

我创建了一个UIButton并使用titleLable.text来设置文本,但是按钮中没有显示文本,因此我将其替换为setText方法,并显示文本,我只是想知道titleLable.text无效的原因

    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    button.titleLabel.text=@"text";

然后使用如下

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

2 个答案:

答案 0 :(得分:4)

因为titleLabelreadonly属性。

  

<强> titleLabel

     

显示a的currentTitle属性值的视图   按钮。 (只读)

     

@property(nonatomic, readonly, retain) UILabel *titleLabel&gt;

     

<强>讨论

     

虽然此属性是只读的,但它自己的属性是   读/写。主要使用这些属性来配置文本   按钮。例如:

     

UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];

     

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

     

button.titleLabel.lineBreakMode = UILineBreakModeTailTruncation;

     

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

     

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

     

<强>状况

Available in iOS 3.0 and later.
     

在UIButton.h中声明

请参阅UIButton Class了解详情。

答案 1 :(得分:1)

Midhun的回答虽然完全正确,却没有回答这个问题。正如他所说,label属性是只读的,但属性不是,包括text属性。

设置文本不起作用的原因是按钮本身将在内部设置文本,具体取决于控件状态。这将覆盖您设置为文本的任何内容。

这就是您使用setTitle:forControlState:的原因。该按钮将使用所有其他状态的正常状态值,除非您另有说明,但如果您从未为任何控件状态设置标题,则不会显示标签。