当UISwitch改变状态时如何调用动作?

Ond*_*rej 51 iphone uiswitch ios5

我想在UISwitch更改其状态时执行某些操作,因此设置为打开或关闭.我该怎么做呢?我需要传递两个对象作为参数.

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

mac*_*mac 115

[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 
Run Code Online (Sandbox Code Playgroud)

当您的开关状态发生变化时,这将调用以下方法

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

  • 你会如何设置代表?我没有看到`delegate`属性或` - setDelegate`函数. (3认同)
  • 不需要设置委托,它是你自己的方法老兄;) (2认同)

Mas*_*sih 6

显然,我们可以使用Swift进行相同的操作,这是代码(已与最新版本的Swift 3.1一起编译并使用)

向您的切换按钮添加操作:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

并实现此方法:

@objc func switchValueDidChange(sender:UISwitch!) {
    print(sender.isOn)
}
Run Code Online (Sandbox Code Playgroud)

或者即使您不使用发件人,也可以删除:

func switchValueDidChange() {
    // do your stuff
}
Run Code Online (Sandbox Code Playgroud)