2016-09-21 3 views
3

Innerhalb einer Erweiterung für UIButton, ich erstelle eine Schaltfläche und fügen Sie ihr Ziel hinzu.Selector für verschiedene ViewController

extension UIButton { 
    convenience init(target: AnyObject) { 
     self.init(type: .system) 
     self.addTarget(target, action: Selector("setLang:"), for: .touchUpInside) 
    } 
} 

In ViewController, wenn die benutzerdefinierte Funktion init mit der Taste, als Ziel zu erstellen, übergeben ich self.
Das hat gut funktioniert, bevor 3. Nun meinen Code Swift Upgrade ich jedoch eine Fehlermeldung erhalten, wenn Sie die Taste Sprechen tippen:

beenden app aufgrund nicht abgefangene Ausnahme ‚NSInvalidArgumentException‘, Grund: ‚- [MyApp. Viewcontroller setlang:]: Unbekannter Selektor gesendet Instanz xxx

Innen ViewController wird die folgende Funktion erklärt, soll heißen:

func setLang(button: UIButton) { 
    //... 
} 

Irgendwelche Ideen?
Vielen Dank im Voraus!

Antwort

0

Das Problem gefunden. Statt zu erklären, die Funktion, wie ich vorher, ich brauche es die folgende Art und Weise zu tun:

func setLang(_ button: UIButton) { 
    //... 
} 

Hope this andere guckt hilft.

0

// versuchen Sie es so, ich hoffe, es wird für Sie arbeiten.

self.addTarget(target, action: NSSelectorFromString("setLang:"), for: .touchUpInside) 
0

Ich fand diese Lösung von Apple Entwickler Foren. Dies kann dir helfen.

selectionButton.addTarget(self, action: #selector(SingleQuestionViewController.selected(_:)), for: .touchUpInside) 
+0

Sie haben die Frage offenbar nicht sorgfältig genug gelesen. Ich habe eine Erweiterung erstellt, um auf einfache Weise Schaltflächen zu erstellen. Das bedeutet auch, dass der ViewController nicht identisch sein kann und wird. Daher können Sie weder "self" noch einen speziellen VC verwenden, um die Funktion aufzurufen. – LinusGeffarth

Verwandte Themen