更改UIButton文本

所以我试图更新UIButton上的文字,当我点击它。 我正在使用以下行来更改文本:

calibrationButton.titleLabel.text = @"Calibration"; 

我已经validation了文本正在改变,但是当我运行该应用程序,然后单击该button时,它会立即变为“校准”,然后返回到默认值。 任何想法,为什么这可能会发生? 有什么样的刷新function,我需要打电话?

在布局它的子视图时,UIButton将使用它自己的标题值来设置titleLabel的文本值,以便为四个状态(普通,高亮,选定,禁用)设置四个不同的string。

由于此function,直接设置titleLabel的文本将不会保留,并且在列出其子视图时将由button重置。

这是你必须做的改变button状态的标题文本。

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

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

 [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) 

以编程方式你可以设置button标题如下:

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

您还可以从故事板中设置button标题属性。

没有什么大不了的,也许很明显,但是有几个状态可用于button。 如果您提供的是“错误”,则不会根据需要看到文本更改。

我注意到我的button没有显示我添加的文本,使用这里显示的方法。 检查这个链接,确保你提供了你打算的UIControlState。

UIControlStateHighlighted和UIControlStateSelected有什么区别?

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

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