2012-09-04 44 views
5

我今天有点困惑,今天发现以下内容在尝试更改UIButton上显示的文本时不起作用。为UIButton设置titleLabel

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

我想我知道为什么,但我只是想确认我的想法。 001确实设置了titleLabel文本属性,但是作为其UILabelUIButton的子视图),它不会导致UI被重绘。这会导致UILabel文本属性的内部更改,但可惜在UI中没有视觉更改。

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

这似乎是该方法的setTitle:forState是要走的正确途径,它有要求一国的额外开销但并调用UI重绘,因为它直接呼吁UIButton。我的问题是,002是做这件事的正确方法,除非我做了完全错误的事情,否则看起来是这样。

回答

7

你是对的。

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

是应该设置按钮标题的方式。这使您可以控制您的按钮在所有不同控制状态下的样子。

从文档:

在一般情况下,如果没有一个国家指定的属性,则默认为 使用UIControlStateNormal值。如果没有设置 UIControlStateNormal的值,则属性默认为 系统值。因此,至少应该将 的值设置为正常状态。

+0

谢谢,非常感谢。 – fuzzygoat