因此,当我单击它时,我试图更新 UIButton 上的文本。我正在使用以下行来更改文本:
calibrationButton.titleLabel.text = @"Calibration";
我已经验证文本正在更改,但是当我运行应用程序并单击按钮时,它会在一瞬间更改为“校准”,然后立即返回其默认值。任何想法为什么会发生这种情况?我需要调用某种刷新功能吗?
因此,当我单击它时,我试图更新 UIButton 上的文本。我正在使用以下行来更改文本:
calibrationButton.titleLabel.text = @"Calibration";
我已经验证文本正在更改,但是当我运行应用程序并单击按钮时,它会在一瞬间更改为“校准”,然后立即返回其默认值。任何想法为什么会发生这种情况?我需要调用某种刷新功能吗?
在布置子视图时,UIButton 将使用其自己的标题值设置其 titleLabel 的文本值,以便您可以为四种状态(正常、突出显示、选中、禁用)设置最多四个不同的字符串。
因为这个特性,直接设置titleLabel的文本不会持久化,在布局子视图时会被按钮重置。
这是更改按钮状态的标题文本所必须执行的操作。
[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];
要设置按钮文本,请使用以下方法:
[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)
以编程方式,您可以设置按钮标题,如下所示:
[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];
您还可以从情节提要中设置按钮标题属性。
没什么大不了的,而且可能很明显,但是按钮有几种状态可用。如果您提供“错误”的内容,您将不会看到所需的文本更改。
我注意到我的按钮没有显示我添加的文本,使用这里显示的方法。检查此链接以确保您提供了您想要的 UIControlState。
对于 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)
如果您不想为所有状态设置标题,只需将其设置为正常状态,因为未设置状态的标题将默认为正常状态的标题。
btn.setTitle("Some text", for:.normal)
对于 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)