Swift:addTarget 操作是否只允许 class 方法?
Swift: Are addTarget actions only allowing class methods?
我试图将目标添加到 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 - "selector not found"
但是如果我将函数移出 switch case 并使其成为我的 ViewController 的方法,一切都会按预期进行。
有人对此有解释吗?是不允许还是有技术原因?
Selector
s 不需要是 class
函数,但它们必须对调用选择器的对象可见(即不能标记为 private
或在方法)。
您可以通过使用其他class's instance
而不是self
来调用项目中的任何方法。
查看此答案了解详情。
我试图将目标添加到 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 - "selector not found"
但是如果我将函数移出 switch case 并使其成为我的 ViewController 的方法,一切都会按预期进行。
有人对此有解释吗?是不允许还是有技术原因?
Selector
s 不需要是 class
函数,但它们必须对调用选择器的对象可见(即不能标记为 private
或在方法)。
您可以通过使用其他class's instance
而不是self
来调用项目中的任何方法。
查看此答案了解详情。