добавить действие на UIButton в Swift 4

Когда я переношу приложение Swift 3 на 4, Xcode попросил меня добавить @objc перед парой моих функций. И когда я это сделал, он показал мне предупреждение о том, что «@objc устарел», мне было интересно, есть ли лучшее решение для обработки addTarget в Swift 4?

введите здесь описание изображения

Вот мой 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
}()

функция:

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

можно ли добавить действие к кнопке без использования #selector и `@objc'?

Спасибо.


person Sajad    schedule 20.09.2017    source источник
comment
Есть больше сообщений, обсуждающих эту проблему, и все они заканчиваются решением, которое отключит устаревшие предупреждения. Однако мне тоже интересно, есть ли новый, Swift 4, способ сделать это без использования @objc, поскольку xcode говорит, что он устарел.   -  person sCha    schedule 20.09.2017
comment
Я помню, читал об этом, но я совсем заржавел. Что произойдет, если вы просто удалите часть @objc?   -  person Nicolas Miari    schedule 20.09.2017
comment
вы проверили этот ответ: stackoverflow.com/questions/45784758/   -  person Muhammad Umair    schedule 20.09.2017
comment
В предупреждении не говорится, что @objc устарело; в нем говорится, что Swift 3 @objc вывод устарел.   -  person Hamish    schedule 20.09.2017


Ответы (1)


Попробуйте следовать инструкциям

поскольку использование интерфейса swift 3 @objc в swift 4 устарело

введите здесь описание изображения

person arpita    schedule 20.09.2017
comment
Это скриншот с сайта evgenii.com/blog/disabling-swift3-objc. -inference-in-xcode9 без указания авторства и такое же решение, как предложено здесь: stackoverflow.com/a/44380886/1187415 . - person Martin R; 20.09.2017