Iphone 当UISwitch更改状态时如何调用操作?

Iphone 当UISwitch更改状态时如何调用操作?,iphone,ios5,uiswitch,Iphone,Ios5,Uiswitch,我想在UISwitch更改其状态时执行一些操作,从而设置为on或off。我该怎么做?我需要传递两个对象作为参数 它是在代码中创建的,因此不使用xib [yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 当开关状态更改时,这将调用下面的方法 - (void)setState:(id)sender { BOOL state =

我想在UISwitch更改其状态时执行一些操作,从而设置为on或off。我该怎么做?我需要传递两个对象作为参数

它是在代码中创建的,因此不使用xib

[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 
当开关状态更改时,这将调用下面的方法

- (void)setState:(id)sender 
{
    BOOL state = [sender isOn];
    NSString *rez = state == YES ? @"YES" : @"NO";
    NSLog(rez);
}

显然,我们可以对Swift进行同样的操作,下面是代码(使用最新版本的Swift 3.1编译和使用)

向开关按钮添加操作:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged)
并实施此方法:

@objc func switchValueDidChange(sender:UISwitch!) {
    print(sender.isOn)
}
或者,即使您没有使用发件人,也可以删除:

func switchValueDidChange() {
    // do your stuff
}
简单的解决方案(与swift 4合作):


将上述功能与“连接”选项卡下“已发送事件”中更改的值链接起来

参考此链接如何设置代理?我没有看到
委托
属性或
-setDelegate
函数。无需设置委托,这是您自己的方法dude;)
@IBAction func toggleSwitch(_ sender: UISwitch) {
    if(mySwitch.isOn) {
        //Do something
    } else {
        //Do something
    }
}