1. ホーム
  2. ios

[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない

2022-02-07 01:26:04

質問

Swift 3 でサブクラスを作成しました。 UIButton のサブクラスで、Objective-Cで書かれています。

ターゲットを追加しようとすると、エラーコードが表示されて失敗します。

class ActionButton: JTImageButton {

    func action() {

    }

    func configure()) {
        // ...
        self.addTarget(self, action: #selector(self.action()), for: .touchUpInside)
        // error: 
        // Argument of '#selector' does not refer to an '@objc' method, property, or initializer

    }
}

解決方法は?

としてマークすればよいのです。 @objc が不要になり self 参照や括弧

class ActionButton: JTImageButton {

    @objc func btnAction() {

    }

    func configure() {
        // ...
        self.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
        // error: 
        // Argument of '#selector' does not refer to an '@objc' method, property, or initializer

    }
}

にすることもできます。 private 必要であれば