为UIButton设置titleLabel

5
我今天有点困惑,发现以下操作无法在尝试更改UIButton上显示文本时生效。
// 001
[[[self button] titleLabel] setText:@"Peanuts"];

我想我知道原因,但我只是想在这里确认一下我的想法。001确实设置了titleLabel文本属性,但由于它是UILabel(UIButton的子视图),它不会导致UI重新绘制。这导致了UILabel文本属性的内部更改,但遗憾的是UI没有出现任何可见变化。

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

看起来方法setTitle:forState是正确的做法,它需要一个状态,但可以直接在UIButton上调用以触发UI重绘。我的问题是,002是否是正确的方法来做到这一点?除非我完全错了,否则似乎是正确的。

1个回答

7

您是正确的。

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

这是设置按钮标题的方式。这样您就可以控制按钮在所有不同状态下的外观。
来自文档:
一般情况下,如果未为状态指定属性,则默认使用UIControlStateNormal值。如果UIControlStateNormal的值未设置,则该属性默认为系统值。因此,最低限度应设置正常状态的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接