Nach einem gewissen iOS Entwickler bestätigt haben, nicht Sie können dies noch nicht tun.
Aber es gibt eine Alternative. Sie können das Absenderobjekt in der Aktionsmethode empfangen. Sie können der Absenderklasse eine beliebige Eigenschaft hinzufügen. Und empfange das in Aktionsmethode.
zum Beispiel:
Erster Ansatz
let button = UIBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(_:)))
button.tag = 1
Und Sie können es wie dieses
func run(sender: UIBarButtonItem) {
let passedInteger = sender.tag
}
empfangen Aber es funktioniert nur, wenn der übergebene Parameter ein einzelner Integer ist. Hier ist, wie Sie es tun können, wenn Sie mehrere Parameter mit einem beliebigen Datentyp übergeben wollen -> Blick auf Second-Ansatz
Zweiter Ansatz
Subclass UIBarButtonItem
class MyBarButtonItem: UIBarButtonItem {
var passedParameter: String?
}
Und erhalten es so
let button = MyBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(sender:)))
button.passedParameter = "John Doe"
func run(sender: MyBarButtonItem) {
// now you have the parameter
let parameter = sender.passedParameter
}
Sie bitte Ihre Antwort nicht wesentlich ändern, nachdem es angenommen wurde. – xoogler