改变文本的UIButton编程迅速

问题很简单。我有一个UIButton, currencySelector,我想通过编程改变文本。以下是我所拥有的:

currencySelector.text = "foobar"

Xcode给了我一个错误“Expected Declaration”。我做错了什么,我如何使按钮的文本更改?

320329 次浏览

在Swift 3,4,5中:

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

否则:

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

另外,@IBOutlet必须为button声明。

只是为那些刚接触斯威夫特iOS编程的人澄清一下。下面这行代码:

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

只适用于IBOutlets,不适用于IBActions

因此,如果你的应用程序使用按钮作为函数来执行一些代码,比如播放音乐,并且你想根据切换变量将标题从Play更改为Pause,你还需要为该按钮创建IBOutlet

如果你试图对IBAction使用button.setTitle,你会得到一个错误。一旦你知道了,这是显而易见的,但对于新手(我们都是),这是一个有用的建议。

斯威夫特3:

设置按钮标题:

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


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

斯威夫特3

当你做@IBAction时:

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

这将发送方设置为UIButton(而不是Any),因此它将btnAction作为一个UIButton

斯威夫特5.0

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

斯威夫特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)

斯威夫特5:

    let controlStates: Array<UIControl.State> = [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved]
for controlState in controlStates {
button.setTitle(NSLocalizedString("Title", comment: ""), for: controlState)
}

当有属性时改变标题有点不同:

我遇到了一个问题:如果你有一个带有标题的UIButton,你必须使用:

my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)

as,根据Apple SetTitle Doc:

如果同时为按钮设置标题和带属性标题,则按钮更倾向于使用带属性标题。

我有一个带属性的标题,我试图在它上设置标题,没有效果…

在Xcode中使用swift - 04为按钮设置标题: 首先创建一个名为setTitle的方法,参数title和UIController state,如下所示
func setTitle(_ title : String?, for state : UIControl.State)   {


}

并在按钮动作方法中召回此方法 < / p >;

yourButtonName.setTitle("String", for: .state)

Swift 4.2及以上版本

使用按钮的IBOutlet

btnOutlet.setTitle("New Title", for: .normal)

使用按钮的IBAction

@IBAction func btnAction(_ sender: UIButton) {
sender.setTitle("New Title", for: .normal)
}

//为正常状态:

btnSecurite.setTitle("TextHear", for: .normal)

截至2021年12月12日- Swift版本5.5.1^假设你已经有一个IBOutlet链接到你的按钮在正常状态。

yourButton.setTitle("Title of your button", for: .normal)