Swift4中如何获取Switch控件的当前布尔状态值?
在Swift 4中获取UISwitch的布尔状态值
嘿,在Swift 4里获取UISwitch的当前状态其实非常直观,我分两种常见场景给你说明:
1. 直接获取当前状态
UISwitch控件自带一个isOn属性,它本身就是布尔类型(Bool),你只需要直接访问这个属性就能拿到当前的开关状态——true代表开启,false代表关闭。
举个简单的例子,假设你已经通过代码或者Storyboard创建了一个UISwitch,并且关联了IBOutlet:
// 先关联IBOutlet,假设名字是mySwitch @IBOutlet weak var mySwitch: UISwitch! // 在需要获取状态的地方(比如按钮点击事件里) @IBAction func checkSwitchStatus(_ sender: UIButton) { let currentStatus = mySwitch.isOn print("当前开关状态:\(currentStatus)") // 输出true或false }
2. 监听开关状态变化时获取
如果你想在开关状态改变的瞬间就拿到最新值,可以给UISwitch添加值变化的监听事件(UIControl.Event.valueChanged),在回调方法里获取isOn属性:
代码创建UISwitch并添加监听的示例:
override func viewDidLoad() { super.viewDidLoad() // 创建UISwitch实例 let customSwitch = UISwitch(frame: CGRect(x: 50, y: 100, width: 0, height: 0)) // 添加值变化监听 customSwitch.addTarget(self, action: #selector(switchValueChanged(_:)), for: .valueChanged) view.addSubview(customSwitch) } // 回调方法 @objc func switchValueChanged(_ sender: UISwitch) { let newStatus = sender.isOn print("开关状态已变为:\(newStatus)") }
用Storyboard关联IBAction的方式:
直接在Storyboard里给UISwitch拖线到ViewController,选择Value Changed事件,然后在方法里获取状态:
@IBAction func switchDidChange(_ sender: UISwitch) { let currentState = sender.isOn // 这里做你需要的逻辑处理,比如根据状态更新UI或发送请求 }
需要注意的是,isOn属性在Swift 4里是UISwitch的标准属性,不需要额外的转换,直接用就行,非常省心~
内容的提问来源于stack exchange,提问作者user9212972
相关产品推荐
相关产品推荐

