【发布时间】:2015-04-08 14:12:47
【问题描述】:
查看互联网和其他 SO 问题后(这个问题很棒 iOS: UIButton titleLabel -- does it do anything at all?),我不清楚这两者之间有什么区别,更准确地说,这两者是如何工作的。
我知道setTitle:forState: 让我为不同的状态(正常、禁用、突出显示等)设置按钮的文本。我也知道,titleLabel 是只读的,但它的属性是读/写的。
此时你可能会问:那有什么问题呢?
我会通过例子来解释。我有以下层次结构:
UITableViewCell - 我的视图 - 我的按钮
MyView 是 xib,通过界面生成器,我在其中设置按钮。当我设置按钮标题时:
self.myButton.titleLabel.text = @"Something"; // some string I get from server
它有效。但是,如果我在只包含 MyView 时尝试类似的方法(项目中的其他地方)并尝试:
myView.myButton.titleLabel.text = @"Something else";
它不起作用。让我更具体一点。在第二部分的一部分(即使在viewDidApper)按钮标题是我想要的。之后,按钮标签返回到它的 default 值。我在界面生成器中设置的那个。当我更改为
[myView.myButton setTitle:@"Something else" forState:UIControlStateNormal];
它按预期工作。
我想知道为什么会这样?我不清楚为什么标题会出现这种故障?这个奇怪的事情是否记录在某个地方(查看了苹果文档)?是否有可能实现 setTitle:forState:?
【问题讨论】:
标签: ios objective-c uibutton