2017-09-20 8 views
1

Wenn ich eine Swift 3 App auf die 4 migrieren möchte, hat mich Xcode gebeten, @objc vor ein paar meiner Funktionen hinzuzufügen. Und als ich es tat, zeigen Sie mir eine Warnung, dass "@objc veraltet ist" Ich fragte mich, ob es eine bessere Lösung für die Handhabung addTarget in Swift 4 gibt?Aktion bei UIButton in Swift hinzufügen 4

enter image description here

Hier ist meine UIButton:

let playButton: UIButton = { 
    let btn = UIButton(type: .system) 
    btn.setTitle("Play", for: .normal) 
    btn.setTitleColor(.green, for: .normal) 
    btn.addTarget(self, action: #selector(playTapped), for: .touchUpInside) 
    return btn 
}() 

func:

@objc func playTapped() { 
     let path = AudioPlayerManager.shared.audioFileInUserDocuments(name: "test") 
    AudioPlayerManager.shared.playAudio(path: path) 
} 

es möglich Aktion auf die Schaltfläche hinzuzufügen, ohne #selector mit und `@objc '?

Danke.

+0

Es gibt mehr Beiträge dieses Problem zu diskutieren, und alle von ihnen mit der Lösung beenden Dadurch werden veraltete Warnungen deaktiviert. Allerdings frage ich mich auch, ob es eine neue, Swift 4-Möglichkeit gibt, dies zu tun, ohne '@ objc' zu verwenden, da der' xcode' angibt, dass er veraltet ist. – sCha

+0

Ich erinnere mich, darüber gelesen zu haben, aber ich bin ziemlich eingerostet. Was passiert, wenn Sie nur den @ @ objc-Teil entfernen? –

+0

haben Sie diese Antwort überprüft: https://stackoverflow.com/questions/45784758/programming-a-uibutton-is-not-working-in-swift-4-xcode-9-beta-6-cannot-add- targ # 45795626 – NSIceCode

Antwort

0

Try Anweisung nach

der Verwendung von schnell 3 @objc Schnittstelle in swift 4 veralten

enter image description here

+3

Das ist ein Screenshot von http://evgenii.com/blog/disabling-swift3-objc-inference-in-xcode9/ ohne Zuordnung und die gleiche Lösung wie hier vorgeschlagen: https://stackoverflow.com/a/44380886/ 1187415. –