2011-12-21 29 views
42

我想在UISwitch改变其状态时执行一些操作,因此设置为打开或关闭。我该怎么做呢?我需要传递两个对象作为参数。如何在UISwitch改变状态时调用一个动作?

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

+1

请参考以下链接[UISwitch动作](http://stackoverflow.com/a/8521373/1072867) – akk

回答

107
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

这将调用下面的方法,当你的开关状态改变

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

您将如何设置代表?我没有看到'delegate'属性或' - setDelegate'函数。 – Joeran

+1

无需设置委托,它是您自己的方法伙计;) –

1

显然,我们可以做的雨燕一样,这里是代码(编译并与雨燕的最新版本工作3.1

添加操作你的开关按钮:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged) 

而实现此方法:

func switchValueDidChange(sender:UISwitch!) { 
    print(sender.isOn) 
} 

或者即使你不使用发件人可能删除:

func switchValueDidChange() { 
    // do your stuff 
}