2015-06-25 32 views
0

我做一个简单的WKInterface有开关控制,使一个函数,该函数切换到显示开关这样的值: enter image description here不知道为什么开关控制总发送虚假值

我不不知道为什么当测试开关时,我收到的结果总是错误的?请解释并告诉我如何解决。正如我认为那个开关的输出将从假变为真并继续前进......这里有什么问题?或Xcode的开关错误?

回答

1

尝试这种情况:对于开关

  1. 首先声明出口这样的:

    @IBOutlet weak var mySwitch: UISwitch! 
    
  2. 在viewDidLoad中实现监听器(目标动作):

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

    }

+0

我知道我可以这样做。但我不知道为什么我的代码开关不能正常工作。正如我所想,当我按住并拖动开关以编码并使用动作时。开关的输出将从真变为假等等,但是用我的代码,输出总是假而不依赖于开关的状态。 –

+0

你错过了细节。你必须阅读“value.on”。这是uiswitch的方法。如果你认为它的价值不够。如果value.on为true,则开关打开。否则关闭。如果开关打开,那么“开启”方法将会被读取。 –

+0

现在我明白了。 –

2

这里,强似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 
    } 
} 

祝你好运!

+0

如果按CTRL并在InterfaceController源代码拖动鼠标,下面的功能将被自动添加:- (IBAction)test:(BOOL)value { }.和价值是正确的。 – Lorenzo

+0

当我更改Bool - > UISwitch时,我的代码在运行代码时会出错 –

+0

继续并重新链接您的UISlider连接。 **不要**忘记在你的* Main.storyboard中'控制'点击''UISlider''并''将'你的UISlider'重新链接到你的* View Controller之前'断开'你当前的连接到'testSwitchPressed' *。 @HieuDucPham –

1

IBAction函数传递触发动作的UIElement。 因此,使用这样的事情

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

如果按CTRL并拖动InterfaceController源代码中的鼠标,下面的功能将被自动添加:

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

而且值是正确的。 如果您希望在用户更改交换机的值时检查该值,这是有效的。

+0

我知道这是正确的,当我按Ctrl并将开关拖动到代码,但问题是:虽然我照你说的做,但我总是得到的输出值是假的。 –

相关问题