2016-09-21 83 views
1

我想在不使用@ib動作輕敲UISwitch的情況下調用某個函數,但無法找到正確的方法來執行此操作,我怎麼試着打電話給它。我通過代碼利用一切手段,而不是故事情節如此使用IB屬性不是一個真正的選擇我試圖在要對這個如何在不使用IBaction/InterfaceBuilder的情況下調用UISwitch touch

我使用的這個,但不斷收到錯誤

與終止使用類型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) 
+0

究竟你有試過嗎?用相關的細節/代碼更新你的問題。 – rmaddy

+0

我試過用touchesBegan來測試用戶的觸摸位置,看看我是否可以在任何時候檢測到uiswitch的框架被觸摸,哪些沒有與通過觸摸的許多變化一起工作開始 –

+0

我想你想'行動: #selector(gameSwitchTapped)' –

回答

2

我想這應該這樣做:

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

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

即時通訊不使用目標c,但將其轉換爲快速語法,雖然我不斷收到問題終止與類型NSException的未捕獲異常 –

+0

和它說什麼? – JohnnyAW

+0

檢查更新後的帖子 –

1

在Objective C:

[mySwitch addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged]; 
相關問題