2016-05-04 18 views
6

Ich bekomme eine Funktion als Funktionsparameter und möchte dies in einem #selector einstellen. Aber ich bekomme die Fehlermeldung:Übergeben Sie eine Funktion an einen #Selector

Argument of '#selector' cannot refer to a property 

Ich habe die folgende Funktion:

private func addGestureRecognizerToItem(selector:() ->()) { 
     let labelGesture = UITapGestureRecognizer(target: self, action: #selector(selector)) 
     let imageGesture = UITapGestureRecognizer(target: self, action: #selector(selector)) 
     label.addGestureRecognizer(labelGesture) 
     imageView.addGestureRecognizer(imageGesture) 
} 

Irgendwelche Ideen, wie dies zu umgehen?

+0

unmöglich, weil Ziel ist 'self', Sie nicht Schließung' UIGestureRecognizer' –

Antwort

7

Wie wäre es damit?

class ViewController: UIViewController { 

let label = UILabel() 
let imageView = UIImageView() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    addGestureRecognizerToItem(#selector(test)) 
} 

func test() { 
} 

private func addGestureRecognizerToItem(selector: Selector) { 
    let labelGesture = UITapGestureRecognizer(target: self, action: selector) 
    let imageGesture = UITapGestureRecognizer(target: self, action: selector) 
    label.addGestureRecognizer(labelGesture) 
    imageView.addGestureRecognizer(imageGesture) 
} 

}

+0

Alots von thx an Sie weitergeben können –

0

Es ist nicht möglich, Sie können Ihre gewünschte Funktion von der Rückgabe der ersten Funktion aufrufen, deren Daten Sie an die andere übergeben möchten. Und Ihr Szenario kann sich entsprechend Ihrer Anforderung ändern.

Verwandte Themen