2017-08-24 1 views
0

Je cherche un moyen d'ajouter du code dans un moyen de faire référence à la valeur d'un UIImageView à partir d'une autre fonction.Swift 3 iOS 10 Référence à UIImageView pour obtenir la valeur pour l'autre fonction

J'ai une fonction qui crée une nouvelle UIImageView pour chaque instance dans un tableau. De plus, un UITapGestureRecognizer est ajouté qui appelle une fonction quand il est tapé. Maintenant, je veux que la fonction, qui est appelée au tap, obtienne l'instance de ce tableau qui se rapporte au UIImageView respectif.

J'espère que ce que je veux faire est clair. :)

+0

Vous pouvez créer un identifiant unique pour chaque UIImageView et vous écrivez une seule fonction pour Tap. En fonction de l'ID, l'UIImageView correspondante est interceptée. – GvSharma

+0

Ainsi, lorsque vous appuyez sur UIImageView, vous voulez que le système de reconnaissance gestuelle cliquable vous dise dans quel tableau se trouve la vue de l'image? Ou voulez-vous savoir quel UIImageView a été exploité? – WsCandy

+0

Ainsi, au lieu d'utiliser l'UITapGestureRecognizer écrire une fonction séparée pour le robinet. Mais à quoi ressemblerait cette fonction? – Paco89

Répondre

0

Disons que vous avez un tableau d'images:

let myImages = [UIImage(named: "image1"), UIImage(named: image2", UIImage(named: "image3"0] 

Et vous avez ces images dans trois vues d'images distinctes:

imageViewA.image = myimages [0] = imageViewB.image myimages [1] imageViewC.image = myimages [2]

en outre, vous avez mis en place tout à juste titre que chaque point de vue de l'image appelle la même fonction sur un robinet (nous l'appellerons imageViewTapped()). Tout ce que vous devez faire est (1) définir correctement la propriété tag de chaque vue d'image pour pointer sur l'index de tableau, (2) obtenir la vue qui a été tapée, et (3) récupérer l'image.

imageViewA.tag = 0 
imageViewB.tag = 1 
imageViewC.tag = 2 

func imageViewTapped(_ recognizer:UITapGestureRecognizer) { 
    let tappedView = recognizer.view 
    let sourceImage = myImages[tappedView.tag] 
} 

Je vous recommande tout mettre dans une boucle (balises, appuyez sur reconnaisseur) et l'ajout d'un certain type de coulée dans la fonction si nécessaire. Mais je ne vois pas votre code pour vous aider avec ça.

+0

PARFAIT! Tactilement je l'avais déjà func imageViewTapped (_ reconnaisseur: UITapRecognizer) { laisser tappedView = recognizer.view laisser sourceImage = myimages [tappedView.tag] } mais au lieu de la coulée UITapGeastureRecognizer j'avais ANYOBJECT. Cela a dû être la raison, car il returend nil. – Paco89