不知道为什么switch控件总是发送false值

Don't know why the switch control always send false Value

我制作了一个带有开关控件的简单 WKInterface 并为该开关制作了一个函数来显示开关的值,如下所示:

不知道为什么测试switch的结果总是false?请解释并告诉我如何修复。正如我所想的那样,该开关的输出将从 false 变为 true 并继续前进......这里有什么问题?或者 Xcode 的 switch 错误?

在这里,不是传递类型 Bool 的值,而是将其作为 UISwitch:

传递
@IBAction func testSwitchPressed(value: UISwitch) {
  println(value.on)
}

这将正确判断您的 switch 是打开还是关闭。

这很棒,因为您也可以使用 Control Flow

@IBAction func testSwitchPressed(value: UISwitch) {
  //println(value.on)
  if value.on {
    println("The switch has been enabled!")
    //cool features here
  } else {
    println("The switch has been disabled!")
    //other cool features here
  }
}

祝你好运!

IBAction 函数传递触发操作的 UIElement。 所以使用这样的东西

  @IBAction func testSwitchPressed(sender : UISwitch)
  {
    println(sender.on)
  }

如果在InterfaceController源代码中按住CTRL并拖动鼠标,会自动添加以下函数:

-(IBAction)TapOnSwitch:(BOOL)值 { }

并且值是正确的。 如果要在用户更改开关值时检查值,则此选项有效。

试试这个:

  1. 首先像这样声明开关的插座:

      @IBOutlet weak var mySwitch: UISwitch!
    
  2. 在viewDidLoad中实现监听器(target-action):

    override func viewDidLoad() {
          super.viewDidLoad()
          // Do any additional setup after loading the view, typically from a nib.
    
          mySwitch.addTarget(self, action: "switchChangedValue:", forControlEvents: UIControlEvents.ValueChanged)
    }
    
  3. 声明这个函数,每次开关值改变时你都会得到响应:

    func switchChangedValue(sender:UISwitch){
     if sender.isKindOfClass(UISwitch){
        if sender.on {
            println("Switch is ON")
            println("\(sender.on)")
        } else {
            println("Switch is OFF")
            println("\(sender.on)")
        }
    }
    

    }