2017-03-23 7 views
-1

Je travaille avec UISlider et je veux reconnaître un changement de valeur:sélecteur non reconnu envoyé à l'instance, UISlider swfit3

var sliderGeofence: UISlider! 

intérieur de mon 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 

Ma méthode valeur de changement:

@IBAction func geofenceValueChange(sender: AnyObject) 
    { 
    print("entro") 
    } 

l'application charge le curseur, cependant, quand je change sa valeur ce qui se passe:

*** en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: '- [MocaAdmin.FirstViewController geofenceValueChange:]: sélecteur non reconnu envoyé à l'instance 0x7fca61511480'

Qu'est-ce que je fais faux?

+1

Essayez de modifier l'ajout de la cible à: 'self.sliderGeofence? .addTarget (self, action: #selector (geofenceValueChange :), pour: UIControlEvents.valueChanged)' – Priyal

+1

@Priyal, vous êtes à mi-chemin. Voir la réponse de Rashwan, ci-dessous. La forme Swift du sélecteur sera 'geofenceValueChange (_ :)' –

Répondre

3

Modifier la cible à ce qui suit:

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

Et puis la fonction:

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

Pas besoin de la @IBAction dans la fonction.

2

Vous devez utiliser le sélecteur comme celui-ci:

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

De cette façon, Xcode suggère même d'utiliser les fonctions et votre frappe pour compléter automatiquement assurer que les choses fonctionnent.

Espérons que ça aide!