2014-10-12 116 views
150

简单的问题在这里。我有一个UIButton,currencySelector,并且我想以编程方式更改文本。这是我有什么:以编程方式快速更改UIButton的文本

currencySelector.text = "foobar" 

Xcode给我错误“预期的声明”。我做错了什么,以及如何让按钮的文本更改?

回答

414

在斯威夫特3:

button.setTitle("Button Title",for: .normal) 

否则:

button.setTitle("Button Title", forState: UIControlState.Normal) 
+25

可以省略'UIControlState'。例如'forState:.Normal' – funroll 2015-09-18 20:28:29

+6

Swift3 is now'.normal' note lower case – Matthew 2016-09-18 21:25:28

+2

Swift3 change' forState' to'for' – 2016-10-18 02:28:23

56

只是澄清,为这些新雨燕的iOS编程。以下行代码:

button.setTitle("myTitle", forState: UIControlState.Normal) 

只适用于IBOutlets,而不是IBActions

所以,如果您的应用使用一个按钮的功能,以执行一些代码,比如播放音乐,并且希望将题目修改从Play基于一个触发变量Pause,您还需要创建一个IBOutlet为那个按钮。

如果您尝试使用button.setTitle而不是IBAction,则会出现错误。它很明显,一旦你知道它,但对于noobs(我们都是)这是一个有用的提示。

+1

是的,直到我看到你的答案时,我才想到谷歌。谢谢! +1 – Evernoob 2015-06-18 16:03:41

+1

这是IOS中的一种模式,花了我一段时间才发现。除非创建IBOutlet,否则您无法访问UI项目的属性。如果您试图更改UI的属性并且无法访问它,请确保您有运行某个代码的IBAction和提供对属性访问的IBOutlet。 – Bendrix 2015-06-18 18:32:34

+5

这个答案没有意义。该动作的“发件人”将是按钮。你可以将任何你想要的东西应用到'sender'。你不需要一个插座来做到这一点。 – rmaddy 2016-04-18 18:24:04

3

斯威夫特3:

设置按钮标题:

//for normal state: 
my_btn.setTitle("Button Title", for: .normal) 

// For highlighted state: 
my_btn.setTitle("Button Title2", for: .highlighted) 
1

斯威夫特3

当你做出@IBAction:

@IBAction func btnAction(_ sender: UIButton) { 
    sender.setTitle("string goes here", for: .normal) 
} 

这台发件人为的UIButton(而不是的任何)所以它的目标作为UIButton btnAction

4

雨燕3.0

// Standard State 
myButton.setTitle("Title", for: .normal) 
0

斯威夫特3

let button: UIButton = UIButton() 
button.frame = CGRect.init(x: view.frame.width/2, y: view.frame.height/2, width: 100, height: 100) 
button.setTitle(“Title Button”, for: .normal) 
相关问题