fuz*_*oat 5 iphone objective-c uibutton uilabel
我有点困惑,今天发现以下在尝试更改显示的文本时不起作用UIButton.
// 001
[[[self button] titleLabel] setText:@"Peanuts"];
Run Code Online (Sandbox Code Playgroud)
我想我知道为什么,但我只是想在这里证实我的想法.001确实设置了titleLabel文本属性,但作为其a UILabel(子视图UIButton),它不会导致重绘UI.这导致UILabel文本属性的内部更改,但遗憾的是UI中没有可视更改.
// 002
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
似乎方法setTitle:forState是正确的方法,它有额外的开销需要一个状态但是会调用一个UI重绘,因为它直接被调用UIButton.我的问题是,002是正确的方法,这似乎是除非我做错了什么?
你是对的.
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
是应该设置按钮标题的方式.这允许您控制按钮在其所有不同控制状态下的外观.
来自文档:
通常,如果没有为状态指定属性,则默认使用UIControlStateNormal值.如果未设置UIControlStateNormal的值,则该属性默认为系统值.因此,您至少应该设置正常状态的值.