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 标题的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在横向时创建 UIButton

通过 UIButton 选择一个单元格 - CollectionViewCell - Swift

在 Swift 中实现用于选择的 UIButton

Swift - CABasicAnimation 完成时更新 UIButton

点击swift 3 iOS时UIButton没有动作

Swift - UIButton 覆盖 setSelected