2016-09-21 2 views
1

Ich versuche, eine Funktion aufzurufen, wenn mein UISwitch angetippt wird, ohne eine @ib-Aktion zu verwenden, aber ich habe Probleme, den richtigen Weg zu finden. Nichts scheint zu funktionieren wie ich versuche es zu nennen. Ich verwende alles über Code und Storyboard nicht so ein ib Eigenschaft verwendet, ist nicht wirklich eine Option ich werde diesenSo rufen Sie einen UISwitch touch ohne IBaction/InterfaceBuilder auf

zu verwenden versuche ich dies verwenden, aber halten den Fehler bekommen

endet mit abgefangene Ausnahme vom Typ NSException

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

Und an anderer Stelle:

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

Was genau haben Sie versucht haben? Aktualisieren Sie Ihre Frage mit relevanten Details/Code. – rmaddy

+0

Ich habe versucht, den Touch-Standort des Benutzers durch touchesBegan zu verwenden, um zu sehen, ob ich überprüfen könnte, wann immer der Rahmen des Uiswitch berührt wird, die nicht mit vielen Variationen davon durch Berührungen begann –

+0

Ich denke, Sie wollen 'action: #selector (gameSwitchTapped) ' –

Antwort

2

Ich denke, das sollte es tun:

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

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

Ich verwende nicht objective c, aber konvertierte es in schnelle Syntax, obwohl ich das Problem mit der nicht abgefangenen Ausnahme des Typs NSException –

+0

beenden und was heißt es? – JohnnyAW

+0

Überprüfen Sie den aktualisierten Beitrag –

1

In Objective C:

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