Swift - 选择时切换 UIButton 标题
Posted
技术标签:
【中文标题】Swift - 选择时切换 UIButton 标题【英文标题】:Swift - Toggle UIButton title when selected 【发布时间】:2017-01-20 22:51:57 【问题描述】:我希望实现一个可用作复选框的按钮,并使用户能够以开/关方式(未选中/选中)切换复选框。目前我已经使用属性检查器设置了我的按钮,包括“标题”为“X”,“文本颜色”为红色。
一旦加载,按钮就会出现一个红色的“X”,一旦点击它就会变成一个绿色的勾号。
我的问题是......如何让按钮再次被点击以恢复到红色 X(它是原始状态),每次点击时都在循环中继续?
@IBAction func check2(_ sender: UIButton)
sender.setTitle("✓", for: .normal)
sender.setTitleColor(UIColor.green, for: UIControlState.normal)
谢谢
【问题讨论】:
【参考方案1】:使用变量跟踪状态并根据状态更新外观:
class ViewController: UIViewController
@IBOutlet weak var button: UIButton!
var isChecked = true
@IBAction func check2(_ sender: UIButton)
isChecked = !isChecked
if isChecked
sender.setTitle("✓", for: .normal)
sender.setTitleColor(.green, for: .normal)
else
sender.setTitle("X", for: .normal)
sender.setTitleColor(.red, for: .normal)
【讨论】:
谢谢,我交换了 X / ✓ 和它们的代表颜色,因为我的默认值是红色 x。感谢您的帮助!【参考方案2】:为 Swift 3 更新
lazy var toggleBT: UIButton =
let button = UIButton()
button.frame = CGRect(x: 40, y: 100, width: 200, height: 40)
button.backgroundColor = .orange
button.isSelected = false // optional(because by default sender.isSelected is false)
button.setTitle("OFF", for: .normal)
button.setTitleColor(.white, for: .normal)
button.titleLabel?.font = .boldSystemFont(ofSize: 14)
button.addTarget(self, action: #selector(handleToggleBT), for: .touchUpInside)
return button
()
func handleToggleBT(sender: UIButton)
sender.isSelected = !sender.isSelected
if sender.isSelected
print(sender.isSelected)
toggleBT.setTitle("ON", for: .normal)
else
print(sender.isSelected)
toggleBT.setTitle("OFF", for: .normal)
// don't forget to add this button as a subView for eg. view.addSubview(toggleBT)
【讨论】:
以上是关于Swift - 选择时切换 UIButton 标题的主要内容,如果未能解决你的问题,请参考以下文章
通过 UIButton 选择一个单元格 - CollectionViewCell - Swift