2016-11-04 9 views
1

In von Swift 2,3 bis Swift Umwandeln 3, erhalten I den Fehler der oben für die folgende Zeile des Codes:Nil nicht kompatibel mit dem erwarteten Argumenttyp Selector ist

var contactButton: UIBarButtonItem {return self.CustomRightItem("icon-nav-nls-contact", target: self, action: nil)} 

Das Problem ist auf der nil Aktion. Ich habe versucht, Selektor zu verwenden und zu leeren: #selector() und `` `#selector (nil) beide vergebens.

Wie kann ich eine Null-Aktion in Swift 3 behandeln?

+0

CustomRightItem sieht aus wie eine benutzerdefinierte Instanzmethode, die ein UIBarButtonItem erstellt. Vielleicht müssen Sie Ihre Funktion neu schreiben, um einen 'Selector?' (Optionaler Selektor) anstelle eines Selektors zu verwenden? Oder, wie Sie in Ihrer eigenen Antwort zeigen, übergeben Sie einen tatsächlichen Selektor. –

+0

Es sieht so aus, als ob die Swift-Initialisierer für UIBarButtonItem einen optionalen Selektor verwenden, also sollte die Änderung Ihrer Funktion, um einen 'Selector? –

Antwort

0

Dies zeigt deutlich Code für eine spätere Aktion Platzhalter ist, so eine Platzhalter-Funktion verwenden, wo der Code wird schließlich, dass die Wähler ruft nach Bedarf gehen und dann mit:

: #selector(functionName(_:))

Ihrem vollständigen Code wird wie folgt aussehen

var contactButton: UIBarButtonItem {return self.CustomRightItem("icon-nav-nls-contact", target: self, action: #selector(contactAction(_:)))} 

func contactAction(_ sender: AnyObject) { 
    return 
} 
Verwandte Themen