Ios 如何在使用另一个UISwitch时更新一个UISwitch
案例:我有两个UI开关-开关1和开关2。 Switch1控制我的场景中UILabel的可见性。 开关2一旦激活,将关闭开关1及其可视性 问题:激活开关2后,开关1关闭并消失,但我的UILabel在场景中仍然可见Ios 如何在使用另一个UISwitch时更新一个UISwitch,ios,swift,Ios,Swift,案例:我有两个UI开关-开关1和开关2。 Switch1控制我的场景中UILabel的可见性。 开关2一旦激活,将关闭开关1及其可视性 问题:激活开关2后,开关1关闭并消失,但我的UILabel在场景中仍然可见 switch1.addTarget(self, action: #selector(switch1Action), for: UIControl.Event.valueChanged) switch2.addTarget(self, action: #selector(switch2Ac
switch1.addTarget(self, action: #selector(switch1Action), for: UIControl.Event.valueChanged)
switch2.addTarget(self, action: #selector(switch2Action), for: UIControl.Event.valueChanged)
@objc func switch1Action(switch1: UISwitch) {
if switch1.isOn {
lockedMessage.isHidden = false
}
if !switch1.isOn {
lockedMessage.isHidden = true
}
}
@objc func switch2Action(switch2: UISwitch) {
if switch2.isOn {
switch1.isOn = false
switch1.isHidden = true
}
非常感谢!:) 这是正确的和期望的行为。由于您显式更改了值,因此由您决定如何处理更改后的值 这样做的原因是,在通过用户交互通知控件的值发生更改后,显式更改控件的值并不少见。如果显式状态更改导致事件再次触发,则最终将进入无限循环。“@rmaddy”
已弃用(自原始问题更新后): 您(可能是意外地)设置了一个不相关的条件来隐藏
标签。(什么是moveWall
?)
请尝试以下方法:
@objc func switch1Action(switch1: UISwitch) {
lockedMessage.isHidden = !switch1.isOn
,,,
}
这是正确和期望的行为。由于您显式更改了值,因此由您决定如何处理更改后的值
这样做的原因是,在通过用户交互通知控件的值发生更改后,显式更改控件的值并不少见。如果显式状态更改导致事件再次触发,则最终将进入无限循环。“@rmaddy”
已弃用(自原始问题更新后):
您(可能是意外地)设置了一个不相关的条件来隐藏标签。(什么是moveWall
?)
请尝试以下方法:
@objc func switch1Action(switch1: UISwitch) {
lockedMessage.isHidden = !switch1.isOn
,,,
}
以编程方式设置switch1.isOn
不会触发switch1操作
。您需要从switch2Action
隐藏消息标签
有关参考信息,请参见:
将开关设置到任一位置都不会导致发送操作消息
以编程方式设置switch1.isOn
不会触发switch1操作
。您需要从switch2Action
隐藏消息标签
有关参考信息,请参见:
将开关设置到任一位置都不会导致发送操作消息
如果我正确理解您的问题,那么如果开关2也打开,您似乎希望隐藏lockedMessage。如果是这种情况–您可以在函数Switch2操作中更改锁定消息的可见性
@objc func switch2Action(switch2: UISwitch) {
if switch2.isOn {
switch1.isOn = false
switch1.isHidden = true
lockedMessage.isHidden = true
}
如果我正确理解您的问题,那么如果开关2也打开,您似乎希望隐藏lockedMessage。如果是这种情况–您可以在函数Switch2操作中更改锁定消息的可见性
@objc func switch2Action(switch2: UISwitch) {
if switch2.isOn {
switch1.isOn = false
switch1.isHidden = true
lockedMessage.isHidden = true
}
我的问题是,如果Switch2关闭Switch1,为什么swift看不到Switch1的状态已经改变,因此在Switch1操作中运行代码?否则,我现在只是在switchActions中重复代码。这是正确的和期望的行为。检查答案。好的,谢谢大家,大家都准备好了,感谢你们的帮助。我的问题是,如果Switch2关闭Switch1,为什么swift看不到Switch1的状态已经改变,因此在Switch1操作中运行代码?否则,我现在只是在switchActions中重复代码。这是正确的和期望的行为。检查答案。好的,谢谢,每个人都很好,感谢你的帮助。是的,这是一种方法,谢谢。虽然现在我在多个函数中重复我的代码。是的,这是一种方法,谢谢。虽然现在我在多个函数中重复我的代码。