2016-04-28 11 views
0

Ich habe den nächsten CodeWie übergebe ich eine Nummer an eine Gestenerkennung?

var i = 0 
for answer in answeres{ 
    let singleTap = UITapGestureRecognizer(target: self, action:#selector(tapDetected(_:)) 
    imageView.addGestureRecognizer(singleTap) 
    i+=1 
} 

func tapDetected(position : Int) { 
    print(position) 
} 

Wie kann ich die var passieren ‚i‘ an jedem Imageview, so dass, wenn der Benutzer die Imageview klicken, druckt er die richtige Nummer im Protokoll?

+0

Mögliche Duplikat [Übergeben von Parametern auf die Schaltfläche Aktion: @selector] (http://stackoverflow.com/questions/3716633/passing-parameters-on-button -Aktionsselektor) – Laffen

Antwort

2

Die Methode, mit der Erkennungs aufgerufen, um die Erkennungs als erstes Argument übergeben:

func tapDetected(sender: UITapGestureRecognizer) {} 

Was bedeutet, dass Sie die view Eigenschaft des Erkennungs die Ansicht damit verbundenen zugreifen können. Und die Zahl kann als Ansicht Tag gespeichert werden:

var i = 0 
for answer in answers { 
    let singleTap = … 
    let imageView = … 
    imageView.addGestureRecognizer(singleTap) 
    imageView.tag = i 
    i = i + 1 
} 

func tapDetected(sender: UITapGestureRecognizer) { 
    print(sender.view.tag) 
} 
+0

Perfekt! Ich habe das gesucht! aber wenn ich ein Objekt an die Funktion übergeben möchte? –

+0

Kann die Funktion das Objekt nicht irgendwo mit dem Ansichtstag abrufen? – zoul

+0

Ja kann es. Vielen Dank –

Verwandte Themen