2017-03-23 4 views
-1

Ich arbeite mit UISlider und ich möchte eine Wertänderung erkennen:Unbekannter Selektor an Instanz gesendet, UISlider swfit3

var sliderGeofence: UISlider! 

Inside my viewDidLoad():

self.sliderGeofence = UISlider(frame: CGRect(x: 20, y: 20, width: self.view.frame.size.width - 50, height: 50)) 
     self.sliderGeofence?.maximumValue = 100000 
     self.sliderGeofence?.minimumValue = 500 
     self.sliderGeofence?.value = 100 
     self.sliderGeofence?.isUserInteractionEnabled=true 
     self.sliderGeofence?.addTarget(self, action: Selector("geofenceValueChange:"),for: UIControlEvents.valueChanged) 
     gmsMap.addSubview(self.sliderGeofence!) 
     sliderGeofence?.isHidden = true 

Meine Wert-Änderungsmethode:

Die App lädt den Schieberegler, aber wenn ich den Wert ändern geschieht dies:

*** App beenden aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '- [MocaAdmin.FirstViewController geofenceValueChange:]: Unbekannter Selektor gesendet Instanz 0x7fca61511480'

Was soll ich tun falsch?

+1

versuchen, das Ziel zu ändern: 'self.sliderGeofence? .addTarget (self, action: #selector (geofenceValueChange :), für: UIControlEvents.valueChanged)' – Priyal

+1

@Priyal, du bist ein Weg dahin. Siehe Rashwans Antwort unten. Die Swift-Form des Selektors ist 'geofenceValueChange (_ :)' –

Antwort

3

Ändern Sie das Ziel auf die folgenden:

sliderDemo.addTarget(self, action: #selector(geofenceValueChange(_:)), for: .valueChanged) 

Und dann die Funktion auf:

func geofenceValueChange(_ sender:UISlider) { 
    print("entro") 
} 

Keine Notwendigkeit für die @IBAction in der Funktion.

2

Sie sollten die Wähler wie diese verwenden:

self.sliderGeofence?.addTarget(self, action: #selector(FirstViewController.geofenceValueChange(_:)), for: .valueChanged) 

Auf diese Weise Xcode wird selbst Funktionen vorschlagen und Ihre Eingabe Dinge funktionieren wird, um sicherzustellen, automatische Vervollständigung zu verwenden.

Hoffe, dass hilft!

Verwandte Themen