Swift: addTarget操作只允许类方法



我试图添加一个目标到UIButton,偶然发现一个奇怪的行为

如果我尝试:

//h = a collection view header
switch myVar {
case "none":
    h.button.addTarget(self, action: "buttonTapped:", forControlEvents: .TouchUpInside)
    func buttonTapped(sender:AnyObject) {
    sendFriendRequest(self.targetUser,nil
    } 
}

我得到SIGABRT - with "selector not found"

但是如果我把这个函数移出switch case并使它成为我的ViewController的一个方法,一切都像预期的那样工作。

有人能解释一下吗?是不允许还是有技术上的原因?

Selector不需要是class函数,但它们必须对调用选择器的对象可见(即不能标记为private或在方法中)

您可以使用其他class's instance代替self调用项目中的任何方法。

查看这个答案的细节。https://stackoverflow.com/a/33068386/2125010

最新更新