在Swift 4中添加对UIButton的动作

在Swift 4中添加对UIButton的动作

问题描述:

当我将Swift 3应用程序迁移到4 Xcode时,我要求在我的一些函数前添加@objc。 当我这样做,它显示我一个警告,“@objc已弃用” 我想知道在Swift 4中是否有更好的解决方案来处理addTarget在Swift 4中添加对UIButton的动作

enter image description here

这里是我的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) 
} 

可以添加动作按钮,而无需使用#selector和`@objc“?

谢谢。

+0

还有更多帖子讨论这个问题,他们都与最终的解决方案这将禁用弃用的警告。不过,我也怀疑是否有一种新的Swift 4方法可以在不使用'@ objc'的情况下执行此操作,因为'xcode'表示它已被弃用。 – sCha

+0

我记得有关这方面的消息,但我很生疏。如果你只是删除'@ objc'部分会发生什么? –

+0

你检查了这个答案: https://stackoverflow.com/questions/45784758/programming-a-uibutton-is-not-working-in-swift-4-xcode-9-beta-6-cannot-add- targ#45795626 – NSIceCode

尝试下面的指令

在SWIFT 4使用SWIFT 3 @objc接口已过时

enter image description here

+3

这是来自http://evgenii.com/blog/disabling-swift3-objc-inference-in-xcode9/的屏幕截图,没有任何归属,并且提供了与此处提出的相同的解决方案:https://stackoverflow.com/a/44380886/ 1187415。 –