斯威夫特:如何切换两个UI切换

问题描述:

  • 我有两个UI切换斯威夫特:如何切换两个UI切换

    • 当我点击一个,我想其他的关闭,反之亦然
    • 下面我有两个开关的动作。
    • 我试着检查开关是否开启(默认情况下),如果是开启时,则关闭它,但如果未开启,则将其打开。

      @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) {} 
      

任何帮助将是巨大的!

+0

您需要在'switchOnePress'方法内为'switchTwo'调用'setOn'。 – rmaddy

+0

嘿马迪。我尝试了一些变化,最后我得到了一些奇怪的结果,例如第二个开关打开并关闭一个开关,但如果我再次这样做,他们都会关闭等。我想我错过了一些明显的东西。 – MegaTron

+0

用您最新的实际代码更新您的问题。更新你的问题,明确解释你想要在每种情况下发生的事情,并清楚地解释实际发生的事情。 – rmaddy

通过减少所需的代码,可以大大简化事情。然后根据呼叫开关的当前值设置相反的开关。

@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) 
} 

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

此外,我不知道你的意图是与标签是什么,但它会误导它的当前形式,因为它不表示&关闭。也许你对每一个都有独特的标签,但这只是我的猜测而已。

+0

这实际上完美。感谢CodeBender!非常感激。祝你有个美好的夜晚:) – MegaTron