2

我创建了一个 UIButton 并用于titleLable.text设置文本,但在按钮中看不到文本,所以我用setText方法替换它,它显示文本,我只想知道为什么titleLable.text它不起作用

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

然后像下面这样使用

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

2 回答 2

5

因为titleLabelreadonly财产。

标题标签

显示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 属性也会返回一个值。对于系统按钮,该属性的值为 nil。

可用性

Available in iOS 3.0 and later.

在 UIButton.h 中声明

请参阅UIButton 类以获取更多详细信息。

于 2012-12-19T09:10:13.463 回答
1

Midhun 的回答虽然完全正确,但并没有回答这个问题。正如他所说,标签属性是只读的,但它的属性不是,包括文本属性。

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

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

于 2012-12-19T09:21:56.783 回答