Objective c 更改UIButton文本

Objective c 更改UIButton文本,objective-c,ios,xcode,event-handling,uibutton,Objective C,Ios,Xcode,Event Handling,Uibutton,因此,我试图在单击UIButton时更新其上的文本。我正在使用以下行更改文本: calibrationButton.titleLabel.text = @"Calibration"; 我已经确认文本正在更改,但当我运行应用程序并单击按钮时,它会在一瞬间更改为“校准”,然后立即返回其默认值。你知道为什么会这样吗?是否需要调用某种刷新函数?在布局其子视图时,UIButton将使用其自己的标题值设置其标题标签的文本值,以便您可以为四种状态(正常、高亮显示、选中、禁用)设置四种不同的字符串 由于此功能

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

calibrationButton.titleLabel.text = @"Calibration";

我已经确认文本正在更改,但当我运行应用程序并单击按钮时,它会在一瞬间更改为“校准”,然后立即返回其默认值。你知道为什么会这样吗?是否需要调用某种刷新函数?

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

由于此功能,直接设置标题标签的文本将不会持续,并且在布局其子视图时将通过按钮重置

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

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

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

[calibrationButton setTitle: @"Calibration" forState: UIControlStateNormal];
有关更多详细信息,请参见
ui按钮
类参考。。。

或在Swift 3中:

calibrationButton.setTitle("Calibration", for: .normal)

这不是一个大问题,也可能是显而易见的,但按钮有几种状态可供选择。如果您提供了一个“错误”的,您将无法看到所需的文本更改

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


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

[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];
您还可以从故事板设置按钮标题属性。

对于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)
适用于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)

button.titleLabel.text=@“某些文本”应该做什么?BorisGafurov如果您键入
button.titleLabel
,您会看到titleLabel是只读属性,因此只读属性的任何属性也是只读的。使用点符号来编辑它们是行不通的,所以需要显式方法来编辑它们。这至少对我来说是有道理的。我想我浪费了大约两个小时才意识到这一点(遗憾的是,我想我已经知道了!)谢谢你的回答。@erdekhayser实际上,只读属性可以有读/写属性。我使用titlelabel的标记将整数传递给action方法。另请参见苹果的docs
,尽管此属性是只读的,但它自己的属性是读/写的。这些属性主要用于配置按钮的文本。例如: