呼び出されません。私はそうのようなプロトコルを持っている:スウィフト3:ジェネリックでTapGestureRecognizer内の委任は
public protocol SubmitAgeDelegate : class {
func changeSubmitButtonBool()
}
問題は、私はジェネリッククラスでそれを呼びたいです。
open class GenericController<UICollectionViewCell,UICollectionReusableView> {
weak var submitAgeDelegate: SubmitAgeDelegate?
UITapGestureRecognizer
以内
func tapGestureDidRecognize(_ gesture: UITapGestureRecognizer) {
if let myAgeDelegate = self.submitAgeDelegate {
print("inside delegate") //Never gets inside
myAgeDelegate.changeSubmitButtonBool()
}
}
ないのはなぜそれが呼ばれることは決してありません?あまりにも確認してください同様の方法は、IBAction関数を使用する通常のクラスでも働いています。私の他のクラスでは
:
open class MyCell: ActionCell, SubmitAgeDelegate {
weak var submitAgeDelegate: SubmitAgeDelegate?
public override init(frame: CGRect) {
super.init(frame: frame)
submitAgeDelegate = self
initialize()
}
// Delegate
public func changeSubmitButtonBool(){
print("called ")
}
どこでも 'submitAgeDelegate'を設定しましたか?あなたがした場合は、そのコードを含めてください。あなたがしなかったなら、それはあなたの問題です。 – Suragch
こんにちはSuragch、あなたの洞察力のおかげで、私はコードに加えて、基本的に私は委任クラスとの関係がないので、私はそのクラスのインスタンスを持っていない可能性があります。 例えば、MyCellのviewdidLoad内のGenericController.delegate = selfのようなものです。 – Marin