Swift - 无论状态如何设置 UIButton 标题

Posted

技术标签:

【中文标题】Swift - 无论状态如何设置 UIButton 标题【英文标题】:Swift - set UIButton title regardless of state 【发布时间】:2016-03-11 06:10:09 【问题描述】:

在 Swift 中有没有办法为所有状态更改 UIButton 的标题/标签?我正在将 UIButton 的标题设置为某些内容,但是当它未突出显示时,标签会更改为以前的内容。

谢谢

【问题讨论】:

请显示一些代码。 “如果没有为状态指定标题,则默认行为是使用与 UIControlStateNormal 状态关联的标题。” 【参考方案1】:

没有一种方法可以同时为所有状态设置标题,但是如果您从不为正常状态以外的状态设置标题,未设置的状态将默认为正常标题.

来自the docs

如果没有为状态指定标题,则默认行为是使用与 UIControlStateNormal 状态关联的标题。如果未设置 UIControlStateNormal 的值,则该属性默认为系统值。

所以打电话

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

没有为其他州设置标题。如果您需要为其他状态设置不同的标题,则每次更改按钮的标题时都需要重新设置它们。

【讨论】:

button.setTitle("title", for: UIControlState()) 也可以为所有控件状态设置标题。 @ataravati - 进行了轻微的语法调整,但除此之外,它在我的测试中工作得很好。 我还必须为highlighted 指定一个。【参考方案2】:

setTitle 现在需要一个 OptionSet - 所以你需要传入一个空集。

现在的语法是:

button.setTitle("Button Text", for: [])

【讨论】:

谢谢!但是应该说,这些迅捷的团队没有审美意识,他们不明白:[]看起来丑得要命! .normal 在 Swift 3 中仍然可用,并且工作得很好。但是UIControlState 是一个OptionSet,所以传递[] 意味着一个空集。

以上是关于Swift - 无论状态如何设置 UIButton 标题的主要内容,如果未能解决你的问题,请参考以下文章

The Swift Code之设置UIButton的不同方式创建,以及不同的状态和外观

如何在 Swift 中以编程方式更改 UIButton 状态

.normal 选项在 UIButton 的状态 OptionSet 中不起作用(Swift 3)

在自定义单元格 Swift 中保存 uibutton 状态

向下滚动时如何使 UIButton 在表格视图中保持选中状态

在 Swift 中为 UIButton 设置动画