首页 > 解决方案 > UISwitch 值更改状态问题

问题描述

UISwitch在我的应用程序中使用了valueChanged如下代码的目标。这个开关在我的UITableView

settingsTableCell.androidSwitchSmall.addTarget(self, action: #selector(switchStateChanged(_:)), for: .valueChanged)


@objc func switchStateChanged(_ mjSwitch: MJMaterialSwitch) {
    if self.lastSwitchState == mjSwitch.isOn {
        return
    }
    self.lastSwitchState = mjSwitch.isOn
    print(mjSwitch.isOn, mjSwitch.tag, "Small")
    self.changeTrackStatus()
}

我正在更改目标方法中 Switch 的值。所以它再次调用switchStateChanged方法。

但我只想switchStateChanged在用户更改开关状态时调用此方法。

什么可能是最好的方法。

我如何区分天气用户更改了开关状态或开关状态以编程方式更改。

标签: iosswiftuiswitch

解决方案


你为什么不使用 .touchUpInside 。这只会在用户与 switch 交互时触发选择器。

settingsTableCell.androidSwitchSmall.addTarget(self, action: #selector(switchStateChanged(_:)), for: .touchUpInside)

推荐阅读