为UIButton设置titleLabel

时间:2012-09-04 14:42:12

标签: iphone objective-c uibutton uilabel

我有点困惑,今天发现在尝试更改UIButton上显示的文字时,以下内容无效。

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

我想我知道为什么,但我只想在这里确认一下我的想法。 001确实设置了titleLabel文本属性,但由于它是UILabelUIButton的子视图),因此不会重新绘制UI。这会导致对UILabel文本属性进行内部更改,但遗憾的是UI中没有可视更改。

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

似乎方法setTitle:forState是正确的方法,它有额外的开销需要一个状态但是会调用UI重绘,因为它直接在UIButton上调用。我的问题是,002是这样做的正确方法,看起来除非我做错了吗?

1 个答案:

答案 0 :(得分:7)

你是对的。

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

是应该设置按钮标题的方式。这允许您控制按钮在所有不同控制状态下的外观。

来自文档:

  

通常,如果没有为状态指定属性,则默认为   使用UIControlStateNormal值。如果值为   未设置UIControlStateNormal,则属性默认为a   系统价值。因此,您至少应该为其设置值   正常状态。