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

59
我希望在UISwitch改变状态时执行一些操作,即打开或关闭。我该如何做到这一点?我需要传递两个对象作为参数。
它是通过代码创建的,因此不使用xib。

1
请参考此链接 UISwitch action - Ravi Kumar Karunanithi
3个回答

123
[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
2
不需要设置代理,这是你自己的方法,伙计 ;) - Mohd Asim

16

显然我们可以用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
}

1

对我来说很容易的解决方案(使用Swift 4):

@IBAction func toggleSwitch(_ sender: UISwitch) {
    if(mySwitch.isOn) {
        //Do something
    } else {
        //Do something
    }
}

将上述函数与连接选项卡下的“已发送事件”中的值更改相关联


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接