私はUIButtonのタップイベントにメソッドをアタッチしたいSwiftプロジェクトを持っています。私は、次のコードを持っている:Swiftは#selectorの引数がObjective-Cに公開されることを望んでいます
class MyClass {
let myButton = UIButton(frame: CGRectMake(50, 50, 100, 50))
init() {
myButton.addTarget(self, #selector(self.didTap(_:)), forControlEvents: .TouchUpInside)
}
func didTap(sender: UIButton) {
print("Tapped")
}
}
XCodeのは、私のaddTarget
ラインを強調し、こう述べています。
Argument of '#selector' refers to a method that is not exposed to Objective-C
それはすべてが正常に動作し、その後示唆のように私は私のfunc didTap
に@objc
接頭辞を追加した場合。
この異常な動作を引き起こしているビルド設定で何かが有効になっていますか?
PS。私はこの動作を7.3.1で行っています。しかし、7.2.1でこれを試しても、#selector(method(_:))
の構文は受け入れられず、Selector("method:")
はうまくいきます。
短くて鋭く包括的な答えです。正確に指す。 – MadNik