【问题标题】:Swift: How to toggle two UI SwitchesSwift:如何切换两个 UI 开关
【发布时间】:2016-10-21 20:01:33
【问题描述】:
  • 我有两个 UI 开关

    • 当我点击一个时,我希望另一个关闭,反之亦然
    • 下面我有两个开关动作。
    • 我尝试检查开关 1 是否打开(默认情况下),如果轻按时打开,则将其关闭,但如果未打开,则将其打开。

      @IBAction func switchOnePressed(_ sender: UISwitch) {
       if switchOne.isOn {
         label.text = "UISwitch is ON"
         switchOne.setOn(false, animated: true)
       } else {
         label.text = "UISwitch is OFF"
         switchOne.setOn(true, animated: true)
       }
      }
      
      @IBAction func switchTwoPressed(_ sender: UISwitch) {}
      

任何帮助都会很棒!

【问题讨论】:

  • 您需要在 switchOnePress 方法中为 switchTwo 调用 setOn
  • 嘿,麦迪。我已经尝试了一些变体,最终得到了奇怪的结果,例如第二个开关打开和一个开关关闭,但是如果我再做一次,它们都会关闭等等。我想我我错过了一些明显的东西。
  • 用您的实际最新代码更新您的问题。更新您的问题,明确说明您希望在每种情况下发生什么,并清楚说明实际发生的情况。

标签: ios swift xcode uiswitch


【解决方案1】:

这通过减少所需的代码大大简化了事情。然后根据调用开关的当前值设置相反的开关。

@IBAction func switchOnePressed(_ sender: UISwitch) {
    label.text = sender.isOn ? "UISwitch is ON" : "UISwitch is OFF"
    switchTwo.setOn(!sender.isOn, animated: true)
}

@IBAction func switchTwoPressed(_ sender: UISwitch) {
    label.text = sender.isOn ? "UISwitch is ON" : "UISwitch is OFF"
    switchOne.setOn(!sender.isOn, animated: true)
}

您不需要设置调用开关的值,因为它应该已经由界面交互处理。

另外,我不知道您对标签的意图是什么,但它目前的形式会产生误导,因为它没有指示打开和关闭的开关。也许您对每个标签都有独特的标签,但这只是我的猜测。

【讨论】:

  • 实际上效果很好。感谢 CodeBender!非常感激。有一个美好的夜晚:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多