103

因此,当我单击它时,我试图更新 UIButton 上的文本。我正在使用以下行来更改文本:

calibrationButton.titleLabel.text = @"Calibration";

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

4

7 回答 7

250

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

因为这个特性,直接设置titleLabel的文本不会持久化,在布局子视图时会被按钮重置。

这是更改按钮状态的标题文本所必须执行的操作。

[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];
于 2012-07-10T15:50:34.680 回答
35

要设置按钮文本,请使用以下方法:

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

有关更多详细信息,请参阅UIButton类参考... http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

或者在 Swift 3 中:

calibrationButton.setTitle("Calibration", for: .normal)
于 2012-07-10T15:50:38.617 回答
6

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

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

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

于 2015-07-11T17:45:18.533 回答
2

没什么大不了的,而且可能很明显,但是按钮有几种状态可用。如果您提供“错误”的内容,您将不会看到所需的文本更改。

我注意到我的按钮没有显示我添加的文本,使用这里显示的方法。检查此链接以确保您提供了您想要的 UIControlState。

UIControlStateHighlighted 和 UIControlStateSelected 有什么区别?

于 2014-04-05T18:35:22.820 回答
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)
于 2016-10-21T08:46:06.130 回答
1

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

btn.setTitle("Some text", for:.normal)
于 2019-11-28T09:34:45.780 回答
0

对于 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)
于 2015-12-02T12:42:01.360 回答