如何在不使用IBaction / InterfaceBuilder

时间:2016-09-21 22:41:07

标签: ios swift uikit

我试图在没有使用@ i动作的情况下轻敲我的UISwitch时调用函数但是我无法找到正确的方法来执行此操作,无论我如何尝试调用它都似乎无效。我通过代码而不是故事板使用所有内容所以使用ib属性并不是我试图在使用它时的一个选项

我正在使用此功能,但不断收到错误

  

以NSException类型的未捕获异常终止

  func gameSwitchTapped(){
    print("touched")
    if gameMuteSwitch.isOn == true {
      gameview.saveData.set(false, forKey: gameview.gameMuteKey)
    } else {
      gameview.saveData.set(true, forKey: gameview.gameMuteKey)}
    }

而且,其他地方:

  gameMuteSwitch.addTarget(self, action: Selector(("gameSwitchTapped")), for: UIControlEvents.valueChanged)

2 个答案:

答案 0 :(得分:2)

我认为应该这样做:

mySwitch.addTarget(self, action: #selector(self.switchChanged(sender:)), forControlEvents: UIControlEvents.ValueChanged)

func switchChanged(sender: UISwitch) {
   let value = mySwitch.on
   // Do something
}

答案 1 :(得分:1)

在目标C中:

[mySwitch addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];