将静态方法设置为Swift

时间:2016-04-21 11:34:39

标签: ios swift

我在静态方法中以编程方式创建UIView,并希望添加UITapGestureRecognizer,这将在我的Helper类中调用另一个静态方法。

Helper.swift

static func showLoadingPopUp(frame: CGRect) -> UIView {
  let transView = UIView.init(frame: frame!)       
  let tapGesture = UITapGestureRecognizer(target: self, action: "transViewTapped:")
  transView.addGestureRecognizer(tapGesture)
  return transView
}

static func transViewTapped(gesture: UITapGestureRecognizer) {
  print("Oh Tapped!!!")
}

但它最终会出现以下消息,可能是因为我的方法的静态特性。此外,Helper.swift是简单的快速课程(不是UIViewUIViewController

错误:

  

无法识别的选择器+ [JaClassified.Helper transViewTapped:]

1 个答案:

答案 0 :(得分:2)

如果您的班级不是NSObject的后代,您可能需要将static func桥接到Objective-C(因为旧式Objective-C选择器适用于NSObject s)。

因此,在您的情况下,您可以将Helper类声明为

class Helper: NSObject {
    ...
}

或者,您可以通过在transViewTapped:

前面加上@objc与Objective-C的桥接
@objc static func transViewTapped(gesture: UITapGestureRecognizer) {
    ...
}

希望它有所帮助。