プロジェクトコードをSwift 4に更新すると、add.targetメソッドでエラーが発生します。このエラーを修正するにはどうすればよいですか?
//Swift3
var chatLogController: ChatLogController? {
didSet {
sendButton.addTarget(chatLogController, action: #selector(ChatLogController.handleSend), for: .touchUpInside)
uploadImageView.addGestureRecognizer(UITapGestureRecognizer(target: chatLogController, action: #selector(ChatLogController.handleUploadTap)))
}
}
ヒントメッセージは、何をすべきかを示しています。関数を宣言する前に_@obj
_を追加してください。
_@objc func handleSend(_ sender: UIGestureRecognizer){
...
}
_
理由は次のとおりです。
Objective-Cでは、セレクターはObjective-Cメソッドの名前を参照するタイプです。 Swiftでは、Objective-Cセレクターは
Selector
構造体で表され、_#selector
_式を使用して構築できます。 Objective-Cから呼び出すことができるメソッドのセレクターを作成するには、#selector(MyViewController.tappedButton(_:))
などのメソッドの名前を渡します。プロパティのObjective-Cゲッターまたはセッターメソッドのセレクターを作成するには、#selector(getter: MyViewController.myButton)
などの_getter:
_または_setter:
_ラベルのプレフィックスが付いたプロパティ名を渡します。
続きを読む ここ 、Appleのドキュメントをご覧ください。