更改UIButton文本


102

因此,当我单击UIButton时,我试图对其进行更新。我正在使用以下行更改文本:

calibrationButton.titleLabel.text = @"Calibration";

我已经确认文本正在更改,但是当我运行该应用程序并单击该按钮时,它立即变为“ Calibration”,然后立即返回其默认值。任何想法为什么会发生这种情况?我需要调用某种刷新功能吗?


Answers:


248

布置其子视图时,UIButton将使用其自己的标题值设置其titleLabel的文本值,以便您可以为四种状态(正常,突出显示,选中,禁用)设置多达四个不同的字符串。

由于此功能,直接设置titleLabel的文本将不会保留,并且在布局子视图时将由按钮重置。

这是您要更改按钮状态的标题文本所要做的。

[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];

4
那么应该怎么做button.titleLabel.text = @“某些文本”呢?
鲍里斯·加富罗夫

4
@BorisGafurov如果键入button.titleLabel,则会看到titleLabel是只读属性,因此任何只读属性的属性也都是只读的。使用点符号来编辑它们是行不通的,因此您需要显式方法才能对其进行编辑。至少对我来说这是有意义的。
erdekhayser 2013年

1
我想我花了大约两个小时才意识到这一点(可悲的是,我想我已经知道了!)
race_carr 2014年

感谢您的回答。
dinesharjani 2015年

3
@erdekhayser事实上,只读属性CAN具有读/写性能。我使用titlelabel的标签将整数传递给操作方法。另请参阅苹果的文档链接 Although this property is read-only, its own properties are read/write. Use these properties primarily to configure the text of the button. For example:
亚伦(Aaron)


6

您可以通过编程方式设置按钮标题,如下所示:

[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];

您还可以从情节提要中设置按钮标题属性。



1

对于Swift 3.0

let button = UIButton(type: .system)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
button.setTitle("set here", for: .normal)
button.addTarget(self, action: #selector(TableViewController.actionButtonTocuh), for: .touchUpInside)
button.titleLabel?.textColor  = #colorLiteral(red: 0.1019607857, green: 0.2784313858, blue: 0.400000006, alpha: 1)
view.addSubview(button)

1

对于Swift 2.0:

let btnObject : UIButton  = UIButton() 
btnObject.frame = CGRect(x: 8, y: 89, width: 70, height: 22)
btnObject.setTitle("Button Title", forState: UIControlState.Normal)
btnObject.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
btnObject.titleLabel?.textColor = UIColor.whiteColor()
btnObject.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)
btnObject.titleLabel?.textAlignment = NSTextAlignment.Center
btnObject.addTarget(self, action: "btnbtnObjectClick:", forControlEvents: UIControlEvents.TouchUpInside)
subView.addSubview(btnObject)

1

如果您不想为所有状态设置标题,只需将其设置为正常状态,因为未设置状态的标题将默认为正常状态的标题。

btn.setTitle("Some text", for:.normal)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.