Je suis en train d'ajouter par programme un UITapGestureRecognizer à l'une de mes vues :
let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(modelObj:myModelObj)))
self.imageView.addGestureRecognizer(gesture)
func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
Le premier problème que j'ai rencontré était "L'argument de '#selector' ne fait pas référence à une méthode, une propriété ou un initialisateur '@Objc'.
Cool, donc j'ai ajouté @objc à la signature de handleTap :
@objc func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
Maintenant, j'obtiens l'erreur "Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C".
Il s'agit simplement d'une image du plan d'un bâtiment, avec quelques images d'épingles indiquant l'emplacement de points d'intérêt. Lorsque l'utilisateur touche l'une de ces épingles, j'aimerais savoir quel point d'intérêt il a touché, et j'ai un objet modèle qui décrit ces points d'intérêt. J'utilise cet objet modèle pour donner à l'image de l'épingle ses coordonnées sur la carte et je pensais qu'il aurait été facile pour moi de simplement envoyer l'objet au gestionnaire de gestes.
1 votes
Vous ne pouvez pas passer des valeurs à un sélecteur comme ça. Pourquoi ne pouvez-vous pas conserver cette valeur dans une variable d'instance et y accéder à partir de la méthode du sélecteur ?
4 votes
Duplicata possible de stackoverflow.com/questions/35635595/ .