【问题标题】:Can't switch state of UISwitch无法切换 UISwitch 的状态
【发布时间】:2015-11-20 11:15:33
【问题描述】:

我必须在我的应用程序中UISwitches。在启动时,它们都设置为关闭,并且第二个开关被禁用,并且只有在第一个开关也被启用时才应该启用,这意味着:

@IBAction func switchOneToggled(sender: UISwitch) {
    if switchOne.on {
        switchTwo.enabled = true
    }
    else {
        switchTWo.enabled = false
    }
}

我的问题是,当我启用switchOne 时,switchTwo 被启用,但我无法通过触摸它来切换switchTwo 的开/关状态。

【问题讨论】:

  • 您显示的代码应该可以满足您的需求。可能是属性检查器中有其他东西导致它不起作用。
  • @Vakas 除了将默认状态设置为关闭之外,我在属性检查器中没有进行任何更改。
  • 因为您缺少switchTWo.on = YES/NO; 的代码,在 enabled = true 下方写入 YES,在 enabed = false 下方写入 NO。
  • YES/NO你的意思是True/False?
  • 视图加载时是否要检查开关一的状态?并决定是否启用开关?

标签: ios swift uiswitch


【解决方案1】:

尝试重置开关。我遇到了类似的问题,只是删除了开关并更换了它,并为其提供了与以前相同的连接。应该是Xcode里面的一个bug,因为它应该可以不用任何代码就可以开启和关闭。

【讨论】:

  • 这对我有用。新旧版本之间故事板文件的唯一变化是添加了autoresizingMaskfixedFrame="YES" 属性。也许其中一个或另一个阻止了触摸交互。一个出口参考也消失了,所以也许那里有什么东西。
【解决方案2】:
@IBAction func switchOneToggled(sender: UISwitch) {
  switchTwo.enabled = switchOne.on
}

您是否可能将userinteractionenabled 设置为false 用于switchTwo

【讨论】:

  • 用户交互默认启用。为了以防万一,我也尝试在切换开关时使其成为现实,但仍然无法正常工作。
  • 开关上方是否有其他(透明)视图阻止您切换其状态?还是任何开关祖先的userinteractionenabled 属性设置为false
  • 在任何开关的顶部都没有视图,我也没有在任何地方设置userInteractionEnabledfalse。我没有线索。
  • 想通过 Dropbox 分享项目?
【解决方案3】:

问题是你的 switchOneToggled 在 Switch 被点击并且开关的状态改变时被调用。您应该检查 Switch 1 的状态并在 viewDidLoad 中启用 Switch 2。

【讨论】:

  • 但是当switchOne 的状态在viewDidLoad 中被检查时,switchTwo 只会被设置一次。每次switchOne 更改其开/关状态并进行相应设置时,都必须对其进行检查。
  • 没有。它会在视图加载后设置,并在开关改变其状态时再次使用您的 switchOneToggled 进行检查。
  • 检查您的 IBAction 是否已连接到您的交换机。
  • 是的,因为我可以看到 switchTwo 在按下 switchOne 时被启用。
  • 您应该使用发件人实现您的 switchOneToggled。就像 if sender.on == true { .... } 因为那是 UISwitch
猜你喜欢
  • 2014-10-09
  • 2018-04-04
  • 1970-01-01
  • 2010-11-27
  • 2014-06-18
  • 2017-01-07
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
相关资源
最近更新 更多